为什么JavaScript变量在某些站点中正确打印,但在其他站点中被认为是未定义的?
为什么JavaScript变量在某些站点中正确打印,但在其他站点中被认为是未定义的 例如,在StackOverflow网页中,我可以执行以下操作:为什么JavaScript变量在某些站点中正确打印,但在其他站点中被认为是未定义的?,javascript,variables,scope,Javascript,Variables,Scope,为什么JavaScript变量在某些站点中正确打印,但在其他站点中被认为是未定义的 例如,在StackOverflow网页中,我可以执行以下操作: let x = 'y'; console.log(x); // Outputs "y". 但在其他一些网站的网页中,如console.log检查将失败: let x = 'y'; console.log(x); // Outputs "Undefined". 从我目前所读到的内容来看,我理解这与范围有关。但我不清楚作用域的类型,因为在JavaSc
let x = 'y';
console.log(x); // Outputs "y".
但在其他一些网站的网页中,如console.log检查将失败:
let x = 'y';
console.log(x); // Outputs "Undefined".
从我目前所读到的内容来看,我理解这与范围有关。但我不清楚作用域的类型,因为在JavaScript中我几乎总是只知道两个作用域:全局文档向下,以及覆盖函数子函数的函数
这似乎与第三个作用域有关,窗口向下,但我不清楚为什么我的devtool控制台没有自动覆盖这一个,在文档和功能上面,在像Duolingo这样的网页中,我遇到了这个问题
无论如何,为了声明变量,我尝试将变量放入IIFEs中。这没有帮助,所以我仍然没有定义我的变量,在我遇到这个问题的网站上。例如:
堆栈溢出:
(()=>{
let x = 'y';
console.log(x);
})(); // Outputs "y".
多林戈运动:
(()=>{
let x = 'y';
console.log(x);
})(); // Outputs "undefined".
为什么有些网站在声明变量时会输出未定义的变量?你认为最好的方法是什么
请在你的回答中解释这是什么原因,为什么只有在一些网站上,而不是在其他网站上,以及为什么我的iLife尝试失败,如果我任意使用这个iLife设置变量的范围
作为一名JS大一新生,我尽了最大努力来表达这个问题。如果有些东西听起来不准确,很抱歉。棘手的问题。这是因为它不是同一个console.log。当您在stackoverflow上打印时
console.log
你会得到这样的结果
ƒ log() { [native code] }
我正在打印没有调用括号的函数定义,因为我想查看定义。如果你在duolingo做同样的事情,你会得到
ƒ (){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];(vt()||window.verbose)&&Function.prototype.apply.apply(t,[console,e])}
这意味着此网页将覆盖在JavaScript中有效的console.log定义。由于JS中的每个函数在默认情况下都返回未定义的结果,所以您得到了未定义的结果。棘手的问题。这是因为它不是同一个console.log。当您在stackoverflow上打印时
console.log
你会得到这样的结果
ƒ log() { [native code] }
我正在打印没有调用括号的函数定义,因为我想查看定义。如果你在duolingo做同样的事情,你会得到
ƒ (){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];(vt()||window.verbose)&&Function.prototype.apply.apply(t,[console,e])}
这意味着此网页将覆盖在JavaScript中有效的console.log定义。由于JS中的每个函数在默认情况下都返回未定义的结果,因此您会得到未定义的结果,而REPL dev tools会将此输出打印给您。很可能是站点脚本中的console.log存在过度使用,从而阻止您使用它。类似于console.log=function{/*doNothing*/}为什么会有人这样做?。也许是为了更难挖掘存储的数据,您链接的duolingo页面需要登录,因此我无法复制。您在哪里输入此代码?很可能是该站点脚本中的console.log存在过度使用,从而阻止您使用它。类似于console.log=function{/*doNothing*/}为什么会有人这样做?。也许是为了更难挖掘存储的数据,您链接的duolingo页面需要登录,因此我无法复制。您在哪里输入此代码?