Javascript 为什么这个打印没有定义?当我使用${name}以外的变量时,它可以工作
在关键事件中访问全局变量时遇到问题。当我使用Javascript 为什么这个打印没有定义?当我使用${name}以外的变量时,它可以工作,javascript,variables,local-storage,undefined,Javascript,Variables,Local Storage,Undefined,在关键事件中访问全局变量时遇到问题。当我使用name时,它会打印未定义的,但如果我使用另一个variablename它会工作。有人知道为什么吗?下面的代码是用javascript编写的 var name = { "key": "value" } document.onkeyup = function (event) { console.log("name is", name["key"]) } 请尝试下面的代码。它起作用了 const name = { "key":
name
时,它会打印未定义的,但如果我使用另一个variablename它会工作。有人知道为什么吗?下面的代码是用javascript编写的
var name = {
"key": "value"
}
document.onkeyup = function (event) {
console.log("name is", name["key"])
}
请尝试下面的代码。它起作用了
const name = {
"key": "value"
}
document.onkeyup = function (event) {
console.log("name is", name.key)
}
您正在阴影化窗口对象上的name属性。您可以使用ES6语法(let或const),也可以使用其他变量名 全局窗口对象已经有一个
name
属性,该属性是当前窗口的名称。因此,当您使用name
时,它返回类型为string
的窗口名称。因此,当您执行name[“key”]
操作时,它总是在未定义的字符串中检查属性key
您可以使用不同的变量名,也可以使用ES6let
或const
来声明变量 如前所述
用var
声明的变量的范围是其当前执行上下文,
它是封闭函数,对于在任何函数外部声明的变量,它是全局变量。
如果重新声明JavaScript变量,它不会丢失其值
在本例中,name
是全局变量,它指向已经存在的变量window.name
而且根据,
window.name
将使用toString
方法将所有值转换为其字符串表示形式
所以名称
的值是“[object object]”
,即字符串
。你可以通过电话查一下
var name = {"key":"value"};
console.log(name); // [object Object]
键
字符串
值“[对象对象]”的属性未定义,这就是为什么您得到未定义
请共享您尝试使用的语言,并共享您在javascript中尝试的代码。我想我附上了一张照片。就在那里now@abm,当您使用var
声明变量name
时,它与浏览器window.name
属性冲突。使用let
或const
!