FirefoxJavaScript的作用是什么;can';t转换为基元类型“;误差平均值?
这是我的javascript测试代码:FirefoxJavaScript的作用是什么;can';t转换为基元类型“;误差平均值?,javascript,firefox,Javascript,Firefox,这是我的javascript测试代码: console.log([]='a')正如您所注意到的,这是修改阵列原型的结果。特别是因为方法toString是在数组和基元值之间的相等检查期间使用的 通常,当您使用==时,其中一个操作数是一个对象,javascript将尝试使用将该对象转换为原语。第3和第4部分具体如下: 如果提示是“string”,那么让methodNames为«“toString”、“valueOf”» 否则,让methodname为«“valueOf”,“toString”» 如
console.log([]='a')代码>正如您所注意到的,这是修改阵列
原型的结果。特别是因为方法toString
是在数组和基元值之间的相等检查期间使用的
通常,当您使用==
时,其中一个操作数是一个对象,javascript将尝试使用将该对象转换为原语。第3和第4部分具体如下:
如果提示是“string”,那么让methodNames为«“toString”、“valueOf”»
否则,让methodname为«“valueOf”,“toString”»
如您所见,将调用toString
方法作为将数组转换为原语的尝试的一部分。默认情况下,数组valueOf
方法不会返回原语,而且由于您已重写toString
方法,现在它也不会返回原语!因此,我们通过第5步,继续进行第6步,即:
抛出TypeError异常
下面是一个演示:
const oldToString=Array.prototype.toString;
Array.prototype.toString=函数(){
log(“调用了数组toString方法!”);
返回“[”+this.join(“,”+“]);
}
//没有类型错误,因为我们转换为基元(在本例中
//案例,一个字符串)成功。
console.log([1,2,3]=“1,2,3]”)
Array.prototype.toString=函数(){
返回{};
}
//类型错误,因为我们试图使用
//toString,但我们找回了一个物体?!
console.log([1,2,3]=“[1,2,3]”
非常感谢您的回答:)我会仔细阅读它&已经投票,但没有足够的代表公开可见(编辑)好吧,酷,感谢所有的信息!再次感谢