JavaScript学习笔记整理(7):表达式和运算符
1.2
"hello"
保留字
true
flase
null
this
变量
i
num
var arr = []
var p = {};
注意:JavaScript对数组初始化表达式和对象初始化表达式求值的时候,数组初始化表达式和对象初始化表达式的元素表达式也都会各自计算一次。也就是说,元素表达式每次计算的值有可能是不同的。var f = function(){}
1.4属性访问表达式var arr =[1];
var p = {x:1}
arr[0]
p.x
注意:在“.”和“[”之前的表达式总是会首先计算,如果计算结果是null或undefined,表达式会抛出一个类型错误异常,因为这两个值都不能包含任何属性。f()
a.sort()
1.6对象创建表达式new Object()
加法运算符(Addition):x + y
减法运算符(Subtraction): x - y
乘法运算符(Multiplication): x * y
除法运算符(Division):x / y
余数运算符(Remainder):x % y
自增运算符(Increment):++x 或者 x++
自减运算符(Decrement):--x 或者 x--
数值运算符(Convert to number): +x
负数值运算符(Negate):-x
1 + 2 //3
'hello' + ' world' //hello world
加法运算符的行为表现为:
- 如果其中一个操作数是对象,则对象会遵循对象到原始值的转换规则转为为原始类值;日期对象通过toString()方法执行转换,其他对象则通过valueOf()方法执行转换,如果结果还不是原始类型的值,再执行toString方法;
- 在进行了对象到原始值的转换后,如果其中一个操作数是字符串的话,另一个操作数也会转换字符串,然后进行字符串连接。
- 否则,两个操作数都将转换为数字(或者NaN),然后进行加法操作。
++a;
后增量a++;
var a = 1;
a++; // 1
++a; // 2
var a = 3;
a--; //3
--a; //2
== 相等
=== 严格相等
!= 不相等
!== 严格不相等
< 小于
<= 小于或等于
> 大于
>= 大于或等于
相等和不等运算符小于(<)
大于(>)
小于等于(<=)
大于等于(>=)
3.2逻辑表达式true && 1; //1
'' && 'f' //""
逻辑或(||)
或运算符(||)的运算规则是:如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值。'a' || '' // "a"
'' || 'a' //"a"
逻辑非(!)
取反运算符形式上是一个感叹号,用于将布尔值变为相反值,即true变成false,false变成true。!true; //false
!false; //true
对于非布尔值的数据,取反运算符会自动将其转为布尔值。规则是,以下六个值取反后为true,其他值取反后都为false。undefined
null
false
0(包括+0和-0)
NaN
空字符串('')
3.3.赋值表达式x += y // 等同于 x = x + y
x -= y // 等同于 x = x - y
x *= y // 等同于 x = x * y
x /= y // 等同于 x = x / y
x %= y // 等同于 x = x % y
x >>= y // 等同于 x = x >> y
x <<= y // 等同于 x = x << y
x >>>= y // 等同于 x = x >>> y
x &= y // 等同于 x = x & y
x |= y // 等同于 x = x | y
x ^= y // 等同于 x = x ^ y
或运算(or):符号为|,表示若两个二进制位都为0,则结果为0,否则为1。
与运算(and):符号为&,表示若两个二进制位都为1,则结果为1,否则为0。
否运算(not):符号为~,表示对一个二进制位取反。
异或运算(xor):符号为^,表示若两个二进制位不相同,则结果为1,否则为0。
左移运算(left shift):符号为<<。
右移运算(right shift):符号为>>。
带符号位的右移运算(zero filled right shift):符号为>>>
有一点需要特别注意,位运算符只对整数起作用,如果一个运算子不是整数,会自动转为整数后再执行。
var o = {x:1};
"x" in o //true
var a = new Array();
a instanceof Object; //true
x>0 ? x : -x; //求x的绝对值
typeof 1 // 'number'
var o={x:1}
delete o.x;
"x" in o //false
void 0 //undefined
void(0) //undefined
var a = 1;
void (a=2);
a //2
<a href="javascript:void(0)"></a>
'a','b' //"b"
var a = 0;
var b = (a++,5);
a //1
b //5