那些容易忽略的事(1) -变量与运算符+

1、变量

//作为变量
alert(x); //ReferenceError: x is not defined
typeof x; //undefined

var y;
alert(y); //undefined
typeof y; //undefined

//作为属性
alert(window.x); //undefined
typeof window.x; //undefined

var a={}
alert(a.x); //undefined
typeof a.x; //undefined

 

总结:

1、未定义的变量或属性。typeof 总返回undefined

2、未定义的变量,报错,总是返回 '变量'  is not defined,不能从参与运算(除1外)

3、未定义的属性,值是undefined

4、变量定义之后,值是undefined

 

2、运算符+,用于数值求和,字符串拼接或者正号

// Number + Number -> 数字相加
1 + 2 // 3

// Boolean + Number -> 数字相加
true + 1 // 2

// Boolean + Boolean -> 数字相加
false + false // 0

// undefined+ Number -> 数字相加
undefined + 1// NaN

// null+ Number -> 数字相加
null+ 2// 2

// Number + String -> 字符串连接
5 + "foo" // "5foo"

// String + Boolean -> 字符串连接
"foo" + false // "foofalse"

// String + String -> 字符串连接
"foo" + "bar" // "foobar"

其他情况相加作字符串连接,不一一列举,如数字相加有遗漏,忘指正。

正号:如果操作数不是一个数值,会尝试将其转换成一个数值
+3     // 3
+"3"   // 3
+true  // 1
+false // 0
+null  // 0
+undefinde// NaN
+[]//0
+[2]//2
+['2']//2
+[2,3]//NaN
+{}//NaN

正号转换可以参考下表:

 

posted @ 2016-07-08 09:52  谢小宝  阅读(257)  评论(0编辑  收藏  举报