Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FirefoxJavaScript的作用是什么;can';t转换为基元类型“;误差平均值?_Javascript_Firefox - Fatal编程技术网

FirefoxJavaScript的作用是什么;can';t转换为基元类型“;误差平均值?

FirefoxJavaScript的作用是什么;can';t转换为基元类型“;误差平均值?,javascript,firefox,Javascript,Firefox,这是我的javascript测试代码: console.log([]='a')正如您所注意到的,这是修改阵列原型的结果。特别是因为方法toString是在数组和基元值之间的相等检查期间使用的 通常,当您使用==时,其中一个操作数是一个对象,javascript将尝试使用将该对象转换为原语。第3和第4部分具体如下: 如果提示是“string”,那么让methodNames为«“toString”、“valueOf”» 否则,让methodname为«“valueOf”,“toString”» 如

这是我的javascript测试代码:


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]”
    非常感谢您的回答:)我会仔细阅读它&已经投票,但没有足够的代表公开可见(编辑)好吧,酷,感谢所有的信息!再次感谢