属性访问表达式:
var o = {x:1, y:{z:3}};//示例对象
var a = [o, 4, [5,6]];//包含对象的数组
console.log(o["x"]);//=> 1 对象o的x属性
console.log(a[2]["1"]);//=> 6 表达式a[2]中索引为1的元素
console.log(a[0].x);//=> 1 表达式为a[0]的x属性
加法运算:
加法转换规则优先考虑字符串连接,如果其中一个是字符串或者转换为字符串的对象,另外一个操作数将会转换为字符串,加法将进行字符串连接操作,如果两个都不是类字符串(string-like)的,那么都将进行算术加法运算。
“1” + “2” = 12 字符串拼接
1 + 2 = 3 加法运算
“1” + 2 = 12 进行字符串拼接,字符串优先于数字,将数字转换为字符串的对象
对象转换为字符串后进行字符串的拼接
true + true = 2 布尔值转换成数字后进行加法运算
2 + null = 2 null转换为0后进行加法运算
2 + undefined = NaN undefined转换为NaN后加法运算
"+"运算符具有从左至右的结合性,圆括号可改变运算顺序:
console.log(1 + 2 + "blind mice");//=> 3 blind mice
console.log(1 + (2 + "blind mice"));//=> 12 blind mice
对象通过toString()方法或者valueOf()方法转换为原始值
javascript语言核心的内置类首先尝试使用valueOf(),再尝试使用toString(),日期类只使用toString()转换
比较操作符:
只有数字和字符串才能真是的执行比较操作,因此不是数字和字符串的都将进行类型转换,valueOf()和toString()进行转换
var c = "hello world";
console.log(c.toLowerCase());//转换小写
console.log(c.toUpperCase());//转换大写