1、变量
//作为变量alert(x); //ReferenceError: x is not definedtypeof x; //undefinedvar y;alert(y); //undefinedtypeof y; //undefined//作为属性alert(window.x); //undefinedtypeof window.x; //undefinedvar a={}alert(a.x); //undefinedtypeof 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
正号转换可以参考下表: