执行以下操作有什么区别:
function (callback) {
var callback = callback || false;
combineCallback = function () {
callback.apply(window);
....
}
getJSON(combineCallback);
}
或者这样:
function (callback) {
var combineCallback = function () {
callback.apply(window);
....
}
getJSON(combineCallback);
}
写 write varcallback =callback || 有什么区别吗?假;
?
最佳答案
var
不会在同一范围内“隐藏”局部变量。同样,var
不会“隐藏”参数(它是局部变量/绑定(bind)本身)。简单来说,每次调用该函数时,callback
表示一个不同的局部变量,它最初包含传递的第一个参数;并且只有一个名为 callback
的局部变量.
因为 var 不会“创建”新变量(搜索“提升”),
function (callback) {
var callback = callback || false;
和
function (callback) {
callback = callback || false;
是等价的 - 没有区别。 (尽管我发现后者更清晰。)
但是,删除 callback = callback || false
改变语义。特别是,回调可能会以 false-y 值结束,例如没有该行的 0。这是否需要/有用是一个与 (false).apply(..)
不同的问题。仍然会导致错误。
这是 x || y
的简单 TTL :
x y x || y
------- --- ------
TRUTH-y ANY x
FALSE-y ANY y
关于Javascript函数变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16850908/