分类: 系统运维
2008-04-05 13:25:27
1,变量的类型规则 javascript中变量是没有类型的: var i=45; i="hello abio"; 这样的代码在js中是正确的。 变量的声明不是必须的(如i=4),但是有一个问题需要注意: 在局部范围如函数中,使用未声明变量时js会自动将该变量转化为一个全局变量,即使你需要的是一个局部变量。 var scope="globle"; function checkScope(){ scope="locale"; document.write(scope);//写入locale } document.write(scope);//输出locale 另外在js中函数的定义是可以嵌套在其他的函数中的,z作用域与变量作用域的处理是一致的。 function func1{ function func2(){...} } 2,没有块级作用域
3,未定义变量和未赋值变量 var x;//未赋值变量。定义了变量,alert(x)输出为undefined alert(u);// 未声明变量。引发错误 u=3;//给一个未声明变量赋值将定义该变量。 |
运算符 1,运算数的类型 在某些情况下,js会对运算数进行类型转化: “3”ד5”//这里会将字符串转换为数值,返回15 不同的上下文环境运算符表达的意义不一样: 3+4,“4”+“ strings” 2,==.=== == 对于数值,字符串,布尔值==比较的是值。 而对于对象型别,==比较的是引用。 注意:如果两个值得类型不同,则先将它们转换为相同的类型,然后再进行比较。 ·如果一个是数字,一个是字符串,那么先将字符串转换为数字然后进行比较。 ·如果一个值为true,先转换为1.若为false转换为0再进行比较。 ·如果一个值是对象,而另一个值是字符串或者数字。那么先将对象转换为一个原始值(使用对象的toString或者valueOf方法)再进行比较。 ·其它类型的组合不相等。 eg:“1”==true(true转换为1,“1”转换为1.两者相等)。 === 与==不同之处在于===计算两个值是否等同时事不考虑类型转换的。如“1”===true返回false 两者还有相应的!=和!==运算符。 字符串可以使用<,>,<=,>=来比较两者的大小。 另外运算符还有delete,void,new,typeof等等。 |