条件运算符
a?a=a:a="b"
//等价于
a&&a=a||a="b"
利用了逻辑运算符里的短路的道理
逗号运算符
二元运算符 先执行左边的表达式 然后执行并返回右边的表达式的结果
a=(b=2,c=3)
alert(a)//输出3 且b赋值为2
//【示例3】下面代码中,for语句的条件表达式中仅能够包含三个表达式,第一个表达式是初始化循环值,第二个表达式是布尔值,第三个表达式是循环变量的递增值。为了能够在三个表达式中完成各种计算任务,这里把逗号运算符发挥到极致。但是,要确保在第二个循环条件的第二个表达式,最后一个表达式返回一个逻辑值,否则会导出循环出现错误。
for(a = 1, b = 10, c = 100; ++ c, a < b; a ++ , c -- ){
alert(a * c);
}
注意c 的值为101 为啥子呢 因为 ++c c变为了101 然后 c– 所以 返回了c(即 101) 然后c再自减了一变为了100 但是 alert已经执行了所以为a*101
void运算符
//【示例2】在下面两行代码中,由于第一行代码没有使用小括号运算符,
//则void运算符优先执行,返回
//值undefined再与1执行减法运算,所以返回值为NaN。在第二行代码中由于使用小括号运算符明确
//void的运算数,减法运算符先被执行,然后再执行void运算,最后返回值是undefined。
alert(void 2 - 1); // 返回NaN
alert(void (2 - 1)); // 返回undefined
注意void 的优先级 还是推荐使用括号 在不清楚 优先级的情况下
typeof 运算符
//【示例】在下面代码中,使用typeof运算符获取变量的类型,以此判断它是否被定义或初始化,如果没有定义或初始化,则重新为其赋值。
var a; // 定义变量
(typeof a == "undefined") && (a = "string")
// 通过类型来检测变量a的状态
alert(a); // 返回"string"
与 上面那个?:运算符的等价一个道理 比用if != 要简单用&&来实现
5.9.1 表达式计算
快速计算下列表达式的值
1&&3
//3
布尔值在&&运算时 如果左为true 则返回右边的值
|| 则相反
1&&“foo”||0
//返回foo
1||“foo”&&0
那这个返回0吧
但是书上说是1
有点迷。。