当前位置: 首页 > 知识库问答 >
问题:

VAR名称和window.name

裴存
2023-03-14

如果我定义了一个名为name的JavaScript全局变量,它会隐藏窗口。名称属性?

我是在Facebook JavaScript认证API的上下文中问这个问题的,因为我注意到使用该名称的全局名称会破坏它,而且我看到了窗口。名称用于其代码中。

共有2个答案

钱稳
2023-03-14

如果使用var在全局范围内声明变量,它将在全局对象上创建属性或写入现有属性(如name):

var name = 5;
console.log(window.name === '5');  // true
console.log(name === '5');  // true
console.log(Object.getOwnPropertyDescriptor(window, 'name'));
    // object with get and set

var foo = 6;
console.log(Object.getOwnPropertyDescriptor(window, 'foo'));
    // object with value

Object.defineProperty(window, 'bar', {
    writable: false,
});

var bar = 7;  // throws in strict mode

var baz;
console.log('baz' in window);  // true

如果使用letconst声明它,则它不会:

const name = 5;
console.log(window.name);  // likely an empty string
console.log(name === 5);  // true
console.log(Object.getOwnPropertyDescriptor(window, 'name'));
    // same as var

const foo = 6;
console.log(window.foo);  // undefined
console.log(Object.getOwnPropertyDescriptor(window, 'foo'));
    // undefined

Object.defineProperty(window, 'bar', {
    writable: false,
});

const bar = 7;  // succeeds

let baz;
console.log('baz' in window);  // false
林博厚
2023-03-14

如果name是一个全局变量,那么namewindow.name是等效的。

全局变量和函数是全局对象的成员。在浏览器中,全局对象包含一个窗口成员,其值为全局对象。

 类似资料:
  • 为什么会这样?名称不应该是未定义的,因为没有给它赋值吗? 如果我尝试相同的,让我们说,它将分配它是未定义的。是一个特殊的关键字还是什么? 谢谢你。

  • 问题内容: 我在此阅读了bash手册页,但我不了解其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。 如果未通过命令行参数设置值,我想设置变量的默认值。 上面的代码回显if 为null并回显if不为null的值。这样: 根据Bash手册页, 使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。 分配默认值。如果参数未设置或为空,则将单词扩展指定给参数。然后

  • 假设我们有这样的代码段: 这段代码产生了27的奇怪结果!!问题似乎在于使用变量名作为“name”,这似乎是一个保留关键字。 但有人能解释为什么会有这种奇怪的行为吗?

  • 我正在尝试实现一个正确的枚举到字符串宏,它将自动实现枚举值和代码中的名称之间的关联。 例如,我想定义一个名为“test”的新宏,如下所示: 这样,通过调用,我可以访问字符串。目前,这个的当前实现如下所示: 虽然当我这样做时,处理的枚举没有得到正确的名称分隔: 因为我希望使用而不是。 有没有办法用逗号分隔来展开名称? 干杯!

  • 问题内容: 在编程中,尤其是在Java中,两者之间有什么区别? 和 这会对for循环产生什么影响? 例如 问题答案: tldr; 尽管和都会使它们所应用的变量递增,但是by 所返回的结果是递增之前的变量值,而by 所返回的结果就是应用递增之后的变量值。 进一步说明 当或形成完整的语句时(如您的示例),两者之间没有区别。例如以下 等同于 但是,当或用作较大语句的一部分时,两者可能不相等。例如,以下断

  • 本文向大家介绍phpcms的分类名称和类别名称的调用,包括了phpcms的分类名称和类别名称的调用的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!