我最近在做一些阅读,我读过的一篇文章来自Opera.
http://dev.opera.com/articles/view/javascript-best-practices/
在那篇文章中他们写道:
JavaScript中的另一个常见情况是,如果未定义变量,则为变量提供预设值,如下所示:
if(v){
var x = v;
} else {
var x = 10;
}
Run Code Online (Sandbox Code Playgroud)
这个快捷符号是双管道字符:
var x = v || 10;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我不能让这个为我工作.是否真的可以检查是否定义了v,如果不是x = 10?
- 谢谢.布赖恩
以下两个语句之间有什么区别(在全局窗口的上下文中)?
(function() { return a; } )(); // ReferenceError: a is not defined
(function(a) { return a; } )(); // returns undefined
Run Code Online (Sandbox Code Playgroud)
我认为它与以下内容有关:
a; // ReferenceError: a is not defined
window.a; // undefined
Run Code Online (Sandbox Code Playgroud)
看起来第二个函数在范围链中上升并在全局窗口范围结束,其中a不是窗口的属性并因此返回undefined.但是,第一个功能不应该做同样的事情并返回undefined吗?
我发现这个关于未定义与未定义的SO问题,但它似乎更多地应用于变量而不是窗口范围中的属性.
javascript ×2