表达式
表达式是代码的最小的单位;表达式组成语句,多个语句组成了程序。
原始表达式
原始表达式包含直接量、关键字和变量名
数组初始化表达式
1)数组直接量:允许有逗号的结尾,故[,,]、[1,,]、[,1,]这三种情况JS引擎会认为最后一个逗号是结尾的逗号,所以就认为只有两个元素;而[,,1]长度为三,最后一个逗号就不是结尾了,则[,,1,]的长度仍然为3。
2)用系统内置函数创建数组:当没有传入参数时就是一个空数组;当传入一个参数时,参数就是数组的length属性值;当传入两个及两个以上的参数时,传入的所有参数是数组中的元素。
对象初始化表达式
对象的属性是逗号分隔开的表达式的值;属性包括属性名和属性值,属性名和属性值之间用冒号隔开。
函数直接量
声明式和定义式
成员访问表达式
引用数据通过["key"]的形式访问成员或者通过点语法
ps:对象用中括号访问时,注意加引号否则为变量。
调用表达式
取值(只要能得到值的表达式都是取值)得到了一个函数然后加小括号可以调用函数;取值得到的不是函数会报错。
算术表达式
算术运算符:加减乘除取余,+-*/%
算术运算符号优先级:等级高得先执行,等级相同的从左到右依次执行。
如果操作数不是数字的基本数据,而是字符串,布尔值,null,undefined,会调用Number()将其转化为数值再进行运算。
不是数字的字符串会转换为NaN,如果有一个操作数是NaN其结果都是NaN。
减乘除取余的运算结果全都是number类型,但是加不一定。
加号运算特殊情况
+:数字相加或字符串连接或false+true
true会转换1,false转换为0,再两者相加就为1
1)如果其中一个操作数是引用类型,优先调用valueOf求值后可以进行加法运算,则加起来,不行再调用toString方法,再进行字符串拼接;
2)如果其中一个操作数是字符串的话,则另一个也会转成字符串再拼接;
3)如果两个操作数都是数字,则进行加法运算。
数组先调用valueOf(),返回数组本身,再调用toString(),空数组则得到一个空字符串;
对象先调用valueOf(),返回对象本身,再调用toString(),返回原始数据类型,即对象字符串[object Object];
基本数据与字符串相加时,其对应字符串