Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript函数变量范围_Javascript_Variables_Scope - Fatal编程技术网

Javascript函数变量范围

Javascript函数变量范围,javascript,variables,scope,Javascript,Variables,Scope,执行以下操作有什么区别: function (callback) { var callback = callback || false; combineCallback = function () { callback.apply(window); .... } getJSON(combineCallback); } 或者用这个: function (callback) { var combineCallback = f

执行以下操作有什么区别:

function (callback) {
    var callback  = callback || false;
    combineCallback = function () {
        callback.apply(window);
        ....
    }
    getJSON(combineCallback);
}
或者用这个:

function (callback) {
    var combineCallback = function () {
        callback.apply(window);
        ....
    }
    getJSON(combineCallback);
}
写write
var callback=callback | | false有什么区别吗

var
不会在同一范围内“隐藏”局部变量。同样,
var
也不会“隐藏”参数(这是一个局部变量/绑定本身)。简单地说,每次调用函数时,
callback
表示一个不同的局部变量,它最初包含传递的第一个参数;而且只有一个局部变量叫做
callback

因为var不会“创建”新变量(搜索“提升”)

是相等的-没有区别。(尽管我觉得后者更清楚。)

但是,删除
callback=callback | | false
会更改语义。特别是,回调可能会以假y值结束,比如没有该行的0。这里是否需要/有用是另一个问题,因为
(false)。应用(…)
仍将导致错误

下面是一个用于
x | | y
的简单TTL:

x        y    x || y
-------  ---  ------
TRUTH-y  ANY  x
FALSE-y  ANY  y
var
不会在同一范围内“隐藏”局部变量。同样,
var
也不会“隐藏”参数(这是一个局部变量/绑定本身)。简单地说,每次调用函数时,
callback
表示一个不同的局部变量,它最初包含传递的第一个参数;而且只有一个局部变量叫做
callback

因为var不会“创建”新变量(搜索“提升”)

是相等的-没有区别。(尽管我觉得后者更清楚。)

但是,删除
callback=callback | | false
会更改语义。特别是,回调可能会以假y值结束,比如没有该行的0。这里是否需要/有用是另一个问题,因为
(false)。应用(…)
仍将导致错误

下面是一个用于
x | | y
的简单TTL:

x        y    x || y
-------  ---  ------
TRUTH-y  ANY  x
FALSE-y  ANY  y

如果函数被多次调用。。如果我不定义var,它是否会被上一次回调忽略?
false.apply()
undefined.apply()
抛出一个类似的错误,因此在这方面没有区别。如果函数被多次调用。。如果我不定义var,它会不会对上一次回调过于敏感?
false.apply()
undefined.apply()
抛出一个类似的错误,所以在这方面没有区别。我认为OP的问题是,是否包括
var callback=callback | | false是否会起作用。在我发布评论之前的几毫秒内,您编辑了答案。对不起!f函数被多次调用。。如果我不定义var,上一次回调是否会被忽略@Juhana我以前和var有过头部问题,这就是我问的原因。。这是@Basit之前的错误链接问题中的代码问题是它没有使用
var
。如果参数“泄漏”范围或“升级”到全局变量,那将是可怕的!这将导致许多无法避免的错误!无论如何,本例中的
var
与代码的运行方式完全无关是否会起作用。在我发布评论之前的几毫秒内,您编辑了答案。对不起!f函数被多次调用。。如果我不定义var,上一次回调是否会被忽略@Juhana我以前和var有过头部问题,这就是我问的原因。。这是@Basit之前的错误链接问题中的代码问题是它没有使用
var
。如果参数“泄漏”范围或“升级”到全局变量,那将是可怕的!这将导致许多无法避免的错误!无论如何,本例中的
var
与代码的运行方式完全无关。
x        y    x || y
-------  ---  ------
TRUTH-y  ANY  x
FALSE-y  ANY  y