Javascript函数变量作用域

标签 javascript variables scope

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

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/

相关文章:

传递给查找的 bash 脚本变量

SQL 多个 LIKE 语句

PHP - 如何在循环中创建变量名?

Delphi本地函数

c# - 在 C# 中,我试图显示上一个 WriteLine 方法中的文本字符串。出现编译器错误

python-3.x - python 本地函数中未解析的引用

javascript - jQuery,在单击时将 css 规则添加到特定元素

javascript - 将外部javascript函数应用于android

javascript - 检查给定的字符串是否是同构的

javascript - 如何使用 JSON.parse() 解析 JSON 字符串