Javascript三目运算表达式详解编程语言
三目运算符,三元运算,顾名思义会有三个要素,表达式的大致组成为condition ? expr1 : expr2;一个语句加两个表达式。问号之前为判断语句。如果为真,则执行第一个表达式,如果为假,则执行第二个表达式。我的理解其实就是简化的if else语句,举个栗子,经常看到的一个点击展开,再点击隐藏按钮。
我想实现点击输入法,实现下面ul的展开与隐藏,如果我们用if else的话可能会这么写:
oBth. unction(){
if (oUl.style.display== block ) {
oUl.style.display== none
}else{
oUl.style.display== block
}
}
但是如果我们用三元运算符的话可能就只需要下面这一行代码:
oBth. unction(){
oUl.style.display == block ? oUl.style.display= none : oUl.style.display= block
}
当然我只是用了一个比较容易理解的写法,还有很大的优化空间,我们当然也可以这样:
oBth. unction(){
var style = oUl.style.display;
oUl.style.display= style == block ? none : block //这样写的话就一定不能忘了把运算结果重新赋值给元素
//oUl.style.display= (style == block ? none : block ) 可读性更高
}
上面代码的意思是,如果style == block 成立的话就把none返回,不成立就返回block,然后把返回结果赋值给作用元素,不过要特别注意 = 和 == 用法和区别。因为赋值运算符(=)的优先级比较低,所以会最后执行赋值运算。如果把后面的三元运算符加上()可读性会更高一点,但效果是一样的。
比较容易出错的地方:
三元运算比较容易出错的应该就是运算的优先级问题:
var isMember = false;
console.log( 当前费用 + isMember ? $2.00 : $10.00 ); //返回$2.00
出错的原因是?的运算优先级比+低,所以实际运行的语句是:
当前费用false ? $2.00 : $10.00 );
在js中字符串是为真的,所以会输出$2.00.
不过为了避免以上错误的话,可以记住:
不是false, 0, undefined, NaN, or null,js都认为是true;
所以具体是用三元运算符还是用if else见仁见智,视具体情况而定吧。
转载请注明来源网站:blog.ytso.com谢谢!
14990.html
c相关文章
- JavaScript 编码指南详解编程语言
- JavaScript 与 Java、PHP 的比较详解编程语言
- JavaScript验证手机号码代码简单代码实例详解编程语言
- Javascript下aes加解密详解编程语言
- JavaScript获取系统当前时间详解编程语言
- JavaScript和html5实现的3D玫瑰花详解编程语言
- JavaScript清除左空格/右空格,判断是否以某个字符串开头详解编程语言
- JavaScript创建和使用命名空间详解编程语言
- JavaScript阻止浏览器F5刷新详解编程语言
- 你真的已经搞懂JavaScript了吗详解编程语言
- 深入理解javascript中 fn() 和 return fn()详解编程语言
- javaScript跨域总结和相关解决办法大全详解编程语言
- javaScript中confirm,alert,prompt函数使用区别分析详解编程语言
- JAVASCRIPT中的运算符学习详解编程语言
- javascript:使用document.getElementById读取数据为空分析详解编程语言
- javascript 调用WebAssembly的方法详解编程语言
- javascript获取曲线路径每个像素的坐标详解编程语言
- javascript es6 Promise 异步同步的写法(史上最简单的教程了)详解编程语言
- javascript json写法详解编程语言
- javascript eval动态变量的方法详解编程语言
- 一些相见恨晚的JavaScript技巧