首页 > 编程知识 正文

js中运算符的优先级,js中append

时间:2023-05-05 13:00:58 阅读:40276 作者:893

使用javascript第三方运算符进行判定时,基本语法为: expression? sentence1 : sentence2

如果expression的值为真,则运行sentence1;否则,运行sentence2。 请看代码

var b=1,c=1 a=2; a=2? b : b--; b //2 a 2? c : c--; c //0根据上面的代码,暂时认为第三轮运算符相当于if else (例如

if(expression ) { sentence1; } else { sentence2; }如果expression为真,即expression不是undefined、NaN、0、null,则运行sentence1,否则运行sentence2。

这样的功能和if一样,为什么还要用它? 首先,在逻辑上多次判断时,第三轮运算符在逻辑上更简洁:

expression1? sentence1 : expression2? sentence2 : expression3? sentence3 :如果任一expressionN的判断为真,则sentenceN立即执行,该判断结束,不再执行后续的任何判断。 如果写if-else的话

if(expression1) { sentence1; }elseif(expression2) { sentence2; }elseif(expression3) { sentence3; } .这样写逻辑看起来很累,所以在jquery和zepto源代码中,三目运算符的应用很常见。

赋值的另一个典型应用场景是赋值,var param=expression? value1 : value2,我想这是大家经常使用的

var b,c=1; var a=b? 2 : 1; a //1 var a=c 0? 2 : 1 a //2判断有一天写了这样的代码

function xx () { var a=1,b=3; a b? 居然报告了错误的返回假: ' ' }! 仔细看看上面的多个判断,为什么报告了错误

expression1? sentence1 : expression2? sentence2 : expression3? sentence3 :只要有一个expressionN成立,就马上跳出来。 原因是什么呢? 可以认为,由于第三个运算符return变为sentenceN,所以判断为立即跳出。 赋值的使用方法也是一样的。 报告错误的理由是

if(expression ) (return ) ) return2; }这样的写法一定是错误的。 那么,如果对上面的说明有疑问,可以使用这样的代码来证明:

var a=1,b=2; var c=b 1? a : 0; c //1 c为什么是1,是因为n在执行表达式后加1。 对于return a,由于return加上1,所以此处的c为1

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。