Javascript中3个需要注意的运算符
Javascript中的奇妙运算符:颠覆认知的体验
一直以来,习惯了C的编程方式,我原以为各种运算符都有其固定的用途和规则。当接触到JavaScript时,我的这一认知被彻底颠覆了。尤其是其中的几个运算符,让我感叹不已。
一、神奇的“==”运算符
在JavaScript中,“==”运算符的行为常常令人惊讶。例如:
1. “10”==10 ? 这个问题在JavaScript中会得到怎样的答案呢?如果你放在C中,类型不同是无法进行比较的。但在JavaScript中,无论你是否愿意相信,答案是true。这是如何做到的呢?字符串"10"在比较时会被自动转换为数字10,进行数值比较。
2. true==1 ? 在JavaScript中,这个问题则更容易理解。因为JavaScript在处理这种类型的比较时,会将true转化为数字1,然后进行数值比较。这在C的IL处理中也是类似的。所以这种现象并不稀奇。
3. {valueOf:function(){return "10"}}==10? 这个例子则更加有趣。在JavaScript中,如果一个对象与数字或字符串进行比较,JavaScript会尝试调用对象的valueOf方法。这里的valueOf方法返回了字符串"10",所以在比较时,这个对象会被转换为字符串"10",然后与字符串"10"进行比较,结果是true。如果对象没有定义valueOf方法,JavaScript还会尝试调用toString()方法。这种灵活性给我们带来了很多编程的乐趣和便利,但同时也可能引发一些潜在的问题。如果你怕程序有潜在的bug,那么最好的办法是将所有的数据类型转换为同一类型进行比较。JavaScript还有一个“===”运算符,它不仅比较值还比较数据类型。这是对于那些追求完美和避免潜在问题的开发者的福音。
二、&&和||运算符的奇妙用法
在JavaScript中,“&&”和“||”运算符的用法也非常有趣和实用。在我们的思维习惯中,这两个运算符的两侧应该是布尔值。但在JavaScript中,这些定义被彻底打破。例如,“b && b.parentNode”这样的代码在JavaScript中非常常见。它的意思是先判断b是否存在,如果存在则继续执行后面的代码,否则直接返回false。这种用法大大简化了代码量,提高了编程效率。同样,“||”运算符在JavaScript中也经常被用于处理默认值,如“ret=results||[]”,如果results有值则使用results的值,否则使用空数组作为默认值。这种用法极大地减少了程序员的工作量,提高了编程效率。这些奇妙的用法背后是JavaScript底层的机制为我们做了大量的工作,就像C的IL一样。JavaScript的这些运算符虽然颠覆了我们的一些认知,但它们也带来了编程的新体验和新乐趣。掌握它们可以让我们更高效地编写代码,但同时也需要注意避免可能出现的潜在问题。通过深入了解这些运算符的工作原理和规则,我们可以更好地利用它们来编写出更优雅、更高效的代码。
编程语言
- Javascript中3个需要注意的运算符
- jsp学习之scriptlet的使用方法详解
- php 批量替换程序的具体实现代码
- 荐书-您有一份JavaScript书单待签收
- phpnow php探针环境检测代码
- jquery 插件实现瀑布流图片展示实例
- PDO--rollBack讲解
- php json中文编码为null的解决办法
- node.js 中国天气预报 简单实现
- 浅析jsopn跨域请求原理及cors(跨域资源共享)的
- asp.net无法获取iis目录的问题解决方法
- Php-Redis安装测试笔记
- Angular排序实例详解
- DOM基础教程之使用DOM控制表格
- php实现遍历文件夹的方法汇总
- 利用jQuery解析获取JSON数据