如果我定义了一个名为name
的JavaScript全局变量,它会隐藏窗口。名称属性?
我是在Facebook JavaScript认证API的上下文中问这个问题的,因为我注意到使用该名称的全局名称会破坏它,而且我看到了窗口。名称
用于其代码中。
如果使用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
如果使用let
或const
声明它,则它不会:
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
如果name
是一个全局变量,那么name
和window.name
是等效的。
全局变量和函数是全局对象的成员。在浏览器中,全局对象包含一个窗口成员,其值为全局对象。
为什么会这样?名称不应该是未定义的,因为没有给它赋值吗? 如果我尝试相同的,让我们说,它将分配它是未定义的。是一个特殊的关键字还是什么? 谢谢你。
问题内容: 我在此阅读了bash手册页,但我不了解其中的区别。我对它们进行了测试,它们似乎产生了完全相同的结果。 如果未通过命令行参数设置值,我想设置变量的默认值。 上面的代码回显if 为null并回显if不为null的值。这样: 根据Bash手册页, 使用默认值。如果参数未设置或为null,则替换单词的扩展名。否则,将替换参数的值。 分配默认值。如果参数未设置或为空,则将单词扩展指定给参数。然后
假设我们有这样的代码段: 这段代码产生了27的奇怪结果!!问题似乎在于使用变量名作为“name”,这似乎是一个保留关键字。 但有人能解释为什么会有这种奇怪的行为吗?
我正在尝试实现一个正确的枚举到字符串宏,它将自动实现枚举值和代码中的名称之间的关联。 例如,我想定义一个名为“test”的新宏,如下所示: 这样,通过调用,我可以访问字符串。目前,这个的当前实现如下所示: 虽然当我这样做时,处理的枚举没有得到正确的名称分隔: 因为我希望使用而不是。 有没有办法用逗号分隔来展开名称? 干杯!
问题内容: 在编程中,尤其是在Java中,两者之间有什么区别? 和 这会对for循环产生什么影响? 例如 问题答案: tldr; 尽管和都会使它们所应用的变量递增,但是by 所返回的结果是递增之前的变量值,而by 所返回的结果就是应用递增之后的变量值。 进一步说明 当或形成完整的语句时(如您的示例),两者之间没有区别。例如以下 等同于 但是,当或用作较大语句的一部分时,两者可能不相等。例如,以下断
本文向大家介绍phpcms的分类名称和类别名称的调用,包括了phpcms的分类名称和类别名称的调用的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!