|
今天发表一个遇到的js的三元运算符优先级问题,如下
假设val已经声明,可定义为任何值。则下面js代码有可能输出的结果为: console.log('value is' + (val != '0') ? 'define') : 'undefine'; 在解答这一题的时候,首先我们先理解什么是三元运算符,如名字一样是有三个操作数 语法:(条件判断)?(结果1):(结果2); 如果条件成立,则返回结果1,否则返回结果2。 在这里,三元运算符优先级是最低的,其次是加号,最后是括号,所以先执行val!='0',为true,在执行条件判断,以为前面是字符串,所以条件判断结果是字符串,字符串返回的布尔也是true,最后结果为define。 |
|