相同的脚本,IE和Firefox下的输出不同,为什么?

neolei

在某处找到了这段代码:

function Name1(name){
    this.name = name;
}
var name = new Name1("11");
document.write(name.name);

Output:
IE11 - "11"
Firefox43 - "undefined"

只是想知道为什么会这样,正确的输出应该是什么?

TJ人群

您显然正在全局范围内运行它。声明为的全局变量var成为全局对象的属性。1在浏览器中,该对象为windowwindow已经有一个名为的属性name:这是窗口的名称(如果有的话)。在Firefox上,它只能是一个字符串,因此为它分配一个对象会被忽略;IE显然宽容得多(并且可以说,就HTML5规范而言,这是错误的;name定义为DOMstring)。因此,name = new Name1("11")最终在Firefox上成为空手,并且name.name(读取name字符串属性)产生undefined

如果更改变量的名称,则在两个浏览器上都将得到相同的输出:

function Name1(name){
    this.name = name;
}
var x = new Name1("11");
console.log(x.name);

如果您能帮助的话,避免在全局范围内运行代码是造成冲突的众多原因之一。将内容包装在作用域函数中:

(function() {
    function Name1(name){
        this.name = name;
    }
    var name = new Name1("11");
    console.log(name.name);
})();


1与此相反,声明全局变量let没有什么是下面的脚本与输出:成为全球对象,这立即引发问题的性质let在Firefox?

// REQUIRES ES2015+ SUPPORT
function Name1(name){
    this.name = name;
}
let name = new Name1("11");
console.log(name.name + " (" + typeof name + ")");

令人满意的答案是,它输出“ 11(对象)”(Chrome也会正确输出,undefined对于您的原始示例也是正确的),而上面的varhttps://jsfiddle.net/s1j11023/)输出“未定义(细绳)”:

// REQUIRES ES2015+ SUPPORT
function Name1(name){
    this.name = name;
}
var name = new Name1("11");
console.log(name.name + " (" + typeof name + ")");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在Firefox,Chrome和IE中这种方法工作有所不同?

来自分类Dev

为什么 C++ 和 Python 中的相同代码生成不同的输出?

来自分类Dev

为什么两种情况下的输出相同?

来自分类Dev

为什么Spring的BCryptPasswordEncoder为相同的输入生成不同的输出?

来自分类Dev

为什么代码相同时我的输出不同?

来自分类Dev

为什么 git diff 与 git diff --staged 下的输出不同?

来自分类Dev

为什么输出不同?

来自分类Dev

为什么输出不同?

来自分类Dev

为什么在Chrome / IE和Firefox中重新定义功能的行为会有所不同?

来自分类Dev

为什么在Firefox,Chrome和IE中,这种方法的工作方式有所不同?

来自分类Dev

相同的链表在groovy和Java之间的行为不同,为什么

来自分类Dev

为什么相同的值与float和double不同

来自分类Dev

为什么JDK 1.4和1.5之间的输出不同?

来自分类Dev

为什么R hist和ggplot直方图输出如此不同?

来自分类Dev

为什么df和du显示不同的输出?

来自分类Dev

为什么df和du显示不同的输出?

来自分类Dev

为什么分区大小和df输出不同?

来自分类Dev

为什么printf和cout对此代码给出不同的输出?

来自分类Dev

为什么R hist和ggplot直方图输出如此不同?

来自分类Dev

为什么 subStr(charArr, 0, strlen(charArr)) 和 charArr 在使用 printf 时具有相同的输出但在传递给函数时具有不同的输出?

来自分类Dev

为什么在不同的python版本上运行相同的代码会得到不同的输出?

来自分类Dev

为什么在不同的笔记本电脑上会得到相同代码的不同输出?

来自分类Dev

为什么ColumnTransformer使用相同的代码但使用不同的.csv文件生成不同的输出?

来自分类Dev

为什么不同的调试器为相同的功能输出不同的汇编代码?

来自分类Dev

当我运行相同的代码但名称不同时,为什么会得到不同的输出?

来自分类Dev

相同的程序在调试和作为脚本运行时得到不同的输出

来自分类Dev

为什么将数组记录到控制台上对其进行操作之前和之后在每种情况下都显示相同的输出

来自分类Dev

为什么printf中相同表达式的输出与cout不同?

来自分类Dev

为什么即使两个查询都相同,查询输出也不同?

Related 相关文章

  1. 1

    为什么在Firefox,Chrome和IE中这种方法工作有所不同?

  2. 2

    为什么 C++ 和 Python 中的相同代码生成不同的输出?

  3. 3

    为什么两种情况下的输出相同?

  4. 4

    为什么Spring的BCryptPasswordEncoder为相同的输入生成不同的输出?

  5. 5

    为什么代码相同时我的输出不同?

  6. 6

    为什么 git diff 与 git diff --staged 下的输出不同?

  7. 7

    为什么输出不同?

  8. 8

    为什么输出不同?

  9. 9

    为什么在Chrome / IE和Firefox中重新定义功能的行为会有所不同?

  10. 10

    为什么在Firefox,Chrome和IE中,这种方法的工作方式有所不同?

  11. 11

    相同的链表在groovy和Java之间的行为不同,为什么

  12. 12

    为什么相同的值与float和double不同

  13. 13

    为什么JDK 1.4和1.5之间的输出不同?

  14. 14

    为什么R hist和ggplot直方图输出如此不同?

  15. 15

    为什么df和du显示不同的输出?

  16. 16

    为什么df和du显示不同的输出?

  17. 17

    为什么分区大小和df输出不同?

  18. 18

    为什么printf和cout对此代码给出不同的输出?

  19. 19

    为什么R hist和ggplot直方图输出如此不同?

  20. 20

    为什么 subStr(charArr, 0, strlen(charArr)) 和 charArr 在使用 printf 时具有相同的输出但在传递给函数时具有不同的输出?

  21. 21

    为什么在不同的python版本上运行相同的代码会得到不同的输出?

  22. 22

    为什么在不同的笔记本电脑上会得到相同代码的不同输出?

  23. 23

    为什么ColumnTransformer使用相同的代码但使用不同的.csv文件生成不同的输出?

  24. 24

    为什么不同的调试器为相同的功能输出不同的汇编代码?

  25. 25

    当我运行相同的代码但名称不同时,为什么会得到不同的输出?

  26. 26

    相同的程序在调试和作为脚本运行时得到不同的输出

  27. 27

    为什么将数组记录到控制台上对其进行操作之前和之后在每种情况下都显示相同的输出

  28. 28

    为什么printf中相同表达式的输出与cout不同?

  29. 29

    为什么即使两个查询都相同,查询输出也不同?

热门标签

归档