javascript 基础 相等操作符
确定两个变量是否相等在编程中极为重要,使用异常的多。
基础认识
ECMAScript提供两组操作符:
相等和不相等——先转换再比较
全等和不全等——仅比较而不转换
相等和不相等
在不同数据类型时,遵循以下基本原则。
- 如果有个一是布尔值,则先将其转换为数字——false转换为0,true转换为1
- 如果一个是字符串,另一个是数值,则将字符串转换为数字在比较
- 如果有一个操作数是对象,另一个不是则调用对象的valueOf()方法,用得到的原始值进行比较。
alert("1" == 1); // true 数字和字符串比较 alert(true == 1); // true 布尔类型和数字比较 alert(NaN == NaN); // false alert(null == undefined); // true undefined是派生自null出来的 function Product(name,price){ this.name = name; this.price = price; } Product.prototype.valueOf = function(){ return this.price; } Product.prototype.toString = function(){ return this.name; } var banana = new Product("banana",2.1); var carrot = new Product("carrot",1.5); alert(banana == 2.1); // true 调用了valueOf()方法,返回价格
alert(banana > carrot); // true 调用了valueOf()方法,返回价格比较
//
全等和不全等
除了在比较值钱不转换操作数之外,全等和不全等与相等和不相等没有什么区别
alert(ture === 1) // false 数据类型不同 alert("5" === 5) // false 数据类型不同 //接着上面创建的对象 alert(alert(banana === 2.1)) //false 不进行数据类型转化,不会调用对象的valueOf方法