那些容易忽略的事(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
正号转换可以参考下表: