您的位置:首页 > Web前端 > JavaScript

JavaScript基础语法

2012-06-14 15:18 330 查看

1. var定义的变量

var定义的变量是其作用域内的局部变量,例如一个函数内部定义的变量,出了函数就不可使用了.

var message ; 未进行初始化的变量, 会保存一个特殊的值 undefined.

省略var直接使用的变量, 则表示为全局变量, 不推荐这种定义类型, 会造成混乱.

var name = "kevin" ,

age = 10 ,

birth = "19090202" ;

此时, 中间的符号要用 , 而不是 ;

2.数据类型

5种简单的数据类型 Undefined Boolean , Number , String . function

1种复杂的数据类型 Object

不支持自己创建数据类型 . ( 以上 6 种就是类型的全部 ) function 也算是一种类型 , 尽量声明时就初始化, var message = "" ;

underdefined : var message 只是定义但是没初始化的话, 那么就是 underdefined 类型, (
尽量定义时就初始化
)

null 值表示一个空对象指针. ( typeof(null)) 返回 object 类型.

如果打算将一个变量保存对象的内容, 则最好在初始化是直接使用Null , var car = null ; 这样在后边只要检查 null 值就知道相应的变量是否已经保存了一个对象的引用了,例如

if (car != null){

// 对 car 对象执行操作,

}

typeof 用来确定类型, 因为是松散的, 所以需要 typeof

alert( typeof 95 ) ; 显示的是 Number .

Boolean 只有2中情况 , true false 注意是区分大小写的 , 并且 1 并不等于 true, 要使用 boolean( 1) 来进行转换成 boolean类型

Null 只针对对象类型的

Number : var nu = 12 ; //10进制

var nu = 07 ; // 八进制

var nu = 091 ; // 由于超过了 8 , 所以变成, 前边0无效, 后边91为10进制数

var nu = 0xA ; //十六进制 , 超过后,不符合规则同上

var nu = 0.1 ; // 浮点数必须要有小数点 .

不要进行小数的比较, 例如 0.1 + 0.2 不等于 0.3 所以

a = 0.1 ;

b = 0.2 ;

if ( a+b == 0.3 ) 这个判断是不通过的

( 如果数太大则自动转成 infinity , 太小 -infinity ( 正负无穷 ) )

NaN : 非数值 not a number , 是指当计算时得出非法内容时, 则返回 NaN 类型, 例如 当除数为 0 时, 返回的结果就是 NaN 类型. 任何与 NaN类型操作的结果都是 NaN, 2个NaN也不相等 . 判断 NaN == NaN 是错误的 .

isNaN( NaN ) // 返回 true

isNaN(100) // 返回 false 因为可以转换成数字

isNaN("blue") // 返回 true , 不能转换成数字

isNaN(true) // 返回 false , 转换成 1

数值转换 : Number() , parseInt() , parseFloat()

Number() ; 如果是 boolean类型, 则 true = 1 , false = 0

如果是 null , 则返回 0

如果是 undefined , 则返回 NaN

如果是字符串 : ( 只是数字 , 转换成数字 , 空的转换成 0 , 包含其他字母 转换成 NaN )

parseInt() , parseFloat() 只是针对 字符串类型进行处理, 相对比 Number()更合理一些.

String 类型 : \n 换行 , \b 空格 , \t 制表 , \r 回车 toString() 方法 , String() 方法 --双引号和单引号没什么区别.

Object 类型 : var o = new Object();

Object类型的属性和方法 :

constructor - 保存用于创建当前对象的函数 ( 构造函数 - Object() )

hasOwnProperty( propertyName ) - 用于检查给顶的属性在当前对象实例中( 而不是在实例的原型中) 是否存在.

isPropertyOf(object) - 用于检查传入对象是否是另一个对象的原型

propertyIsEnumerable( propertyName) - 用于检查给定的属性是否能够使用 for-in 语句.

toString() - 返回对象字符串表示

valueOf() - 返回对象的字符串,数值或布尔值表示, 通常与 toString()方法返回值相同.

3.操作符

位操作 : ~非 , &与 , |或 , ^异或 << 左移 >> 右移 >>>无符号右移

布尔操作 : ! 求反 , && 逻辑与, || 逻辑或

关系操作 : < <= > >= var result1 = 5 > 3 ( result1 返回 true )

== , != , === ,!== ( 最后是不全等, 如果两个不同类型的值进行比较, 则 !== 会不进行类型转换而直接比较 ) var result = ( "55" != 55 ) 这个会返回 false , 因为 转换类型后是相等的,但是如果是 var result = ( "55" !== 55) 会返回true , 因为没有发生类型转换 . 推荐使用 === , !== 全等和不全等操作符 .

条件操作 : var result = ( max1 > max2 ) ? number1 : number 2 ;

4.语句( 特殊 )

特殊 for 语句 :for( propertity in expression ) statement

label标签 : start : for( var i = 0; i < 10; i++) 将来这个lable 可以在 break 和 continue中使用

with 语句 : 不建议使用 .

5.函数

function functionName(arg0,arg1, ...... ){

statements

} 不同之处在与参数传递, 解析器不会判断你传递的参数是否正确,数量或数据类型都无所谓, 因为在函数内部有个arguments数组用来接收参数,并且可以在函数内部直接使用,例如直接使用arguments.length, 可以判断究竟传过来的实际参数是哪些.例如 (
因为JavaScript中的数组可以存放不同类型的多个数据 )

function doAdd(){

if ( arguments.length == 1 ) {

alert( arguments[0] + 10 ) ;

} else if ( arguments.length == 2 ) {

alert( arguments[0] + arguments[1] );

}

}

doAdd( 10 ) ; // 结果 20

doAdd ( 30,20 ) // 结果 50

如上的不同之处 , 必定函数没有重载 .



6.JavaScript 获取元素

1). 通过元素ID document.getElementById( id )

2). 通过标签名字 document.getElementByName( "li" ) 此处的名字是指元素的名字, 而同一种元素有可能不只有一个, 比如<p> 段落这个元素,可能就有很多,此时是全部返回.

3). 通过类名字 document.getElementByClassName( class ) //新的方法, HTML5中可以使用, 返回的也是数组,

7. 语句

特殊的 label : 语句 ( 尽量不要使用 ) 例如 :

outcome :

for(var i=0; i<10;i++)

for(var j=0; j<10; j++)

if (j==5 & i==5)

continue outcome ;

特殊的 with 语句 : 不建议使用

8. 基本类型和引用类型的赋值

基本类型 :

var a = 5 ;

var b = a ;

此时, 会在栈中开辟一块新的内存地址, 用来保存变量 b 的内容, 此时的 a 和 b 是完全独立的内容.

引用类型 :

var obj1 = new Object();

var obj2 = new Obj1;

obj1.name = "Nicholas"

alert( obj2.name) ; // 此时输出的结果也是 Nicholas

因为 : 新的引用类型只是在栈中重新分类了个地址,保存了对象的指针, 即 obj1 这个指针变量( 所谓的引用类型)和 obj2这个指针变量(所谓的引用类型) 都指向了内存中的同一个堆地址. 所以 obj1.name 和 obj2.name 是一样的内容.

传递参数时, 跟 c 一样, 基本变量传递值, 引用类型也传递"值" , 但是这个值就不一样了, 是一个指针的值.

例如 :

function setName(obj){

obj.name = "Nicholas";

}

var person = new Object();

setName(person);

alert(person.name) // Nicholas ( 引用 即 指针, 多想指针 )
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: