Javascript ES6 js关键字作为参数精确行为
我有一个代码,它应该返回'undefined'或任何错误,但它给出了前面提到的输出Javascript ES6 js关键字作为参数精确行为,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,我有一个代码,它应该返回'undefined'或任何错误,但它给出了前面提到的输出 让i=(x,c)=>{ c(x); }; i(20,(未定义)=>{ 设j=未定义; 控制台日志(j); }); 函数y(未定义){ 设a=未定义; 控制台日志(a); } y(90)未定义的不是保留字 它是一个全局只读变量 没有什么能阻止您在更窄的范围内定义另一个同名变量。未定义的不是一个保留字,您可以在这里看到: 在您的场景中,undefined实际上包含回调值,第一种情况下为20,第二种情况下为90 例如
让i=(x,c)=>{
c(x);
};
i(20,(未定义)=>{
设j=未定义;
控制台日志(j);
});
函数y(未定义){
设a=未定义;
控制台日志(a);
}
y(90)代码>未定义的
不是保留字
它是一个全局只读变量
没有什么能阻止您在更窄的范围内定义另一个同名变量。未定义的
不是一个保留字,您可以在这里看到:
在您的场景中,undefined
实际上包含回调值,第一种情况下为20,第二种情况下为90
例如,如果要将值undefined
分配给作用域j
或a
,可以使用void 0
。
关于void
如何工作的更多信息可以在这里找到(另外,void
实际上是javascript中的保留字):
让i=(x,c)=>{
c(x);
};
i(20,(未定义)=>{
设j=0;
控制台日志(j);
});
函数y(未定义){
设a=0;
控制台日志(a);
}
y(90)我一直很好奇为什么有些人对编程构造如此好奇,以至于你永远都不应该使用它。这样写代码没有什么好处。充其量,它会让代码变得难以理解。最糟糕的情况是,你很难理解,你把代码的工作方式搞砸了,或者其他人试图处理你的代码时出错了。我想说,花更多的时间理解好的编码方法,而不是坏的编码方法。@jfriend00也许是一个家庭作业或类似的东西?这些是我的一些朋友在大学考试/实践中遇到的问题。我完全同意,但是,这种编程方式没有什么好处,除了发现未定义实际上不是(令人惊讶的?)javascript.IMO中的保留字。如果这是家庭作业,任何花时间教授这方面的课程都会错过教授更重要和有用内容的机会。这是语言中一个可爱的小角落,可能永远都不应该使用。@jfriend00我完全同意你的看法。然而,在我短暂的学习生活中(我没有学习那么多),我遇到过几位老师/课程,他们的目标并不是教授有用的信息,有时,在我看来,老师只是没有足够的能力教授正确的信息,给出了误导性的例子,实际上对学习毫无帮助。简而言之,我实际上可以想象这样一种情况:这个任务被赋予“错误地”解释一个概念,例如,可能与javascript中的保留字有关。