IF是JavaScript中的函数吗?

IF是JavaScript中的函数吗?,javascript,jquery,scope,Javascript,Jquery,Scope,我一直在探索JavaScript的作用域。资料指出,作用域是由函数分隔的,而不是像大多数语言那样由块分隔的 我在我正在编写的代码中加入了一些显示代码,因为函数中的一些函数(对我来说)不清楚,我想看看这些函数的作用域是如何工作的 令人惊讶的是,$.getJSON函数中的$.each函数中的if(){}子句显然被视为一个函数。我会假设它是一个街区 function displayInfo(nKey) { if(!nKey) var nKey = 0; var objFilm = {}

我一直在探索JavaScript的作用域。资料指出,作用域是由函数分隔的,而不是像大多数语言那样由块分隔的

我在我正在编写的代码中加入了一些显示代码,因为函数中的一些函数(对我来说)不清楚,我想看看这些函数的作用域是如何工作的

令人惊讶的是,$.getJSON函数中的$.each函数中的if(){}子句显然被视为一个函数。我会假设它是一个街区

function displayInfo(nKey) {
    if(!nKey) var nKey = 0;
    var objFilm = {};
    var imgRef;
    //iterate through all object properties; display their attributes
    // Object.keys() returns an array of all property names
    // for most entries, the object is ...film; check first for array of multiple films
    jqxhr = $.getJSON('dbMovies.json', function(data) {
        var xx = "xx";
        $.each(data.disc, function(i, xdata) {
            if(xdata.key == nKey) {
                objFilm = xdata.film;
                var yy = "yy";
                imgRef = xdata.img;
                return false;
            }
console.log("in jqxhr, xx: " + typeof xx);  //this shows
console.log("in jqxhr, yy: " + typeof yy);  //this does NOT
        }); // $.each
    })
    .done(function() {...}

如果If(){}是一个函数,那么什么是块?

在If中有一个
return false
,因此,只有当If条件为非真且If控制的块未运行时,才会到达这两条日志语句。如果块没有运行,则不会为
yy
赋值。它在范围内,但未初始化

分配给函数的变量仅受其作用域的限制,该作用域保证包含在其中声明函数的作用域

如果(){}
不是函数。。。这是一个街区。它没有出现在示例中的原因是,您有
return false
,它在日志发生之前中断,而当日志发生时,变量仍然未定义

(函数(){
if(true)var x=“if声明变量”/*块声明*/
document.getElementById('if').innerHTML=x?x:'undefined';
(功能(){
var y=“函数声明变量”;
})();
如果(y的类型!=“未定义”)
document.getElementById('func')。innerHTML=y
其他的
document.getElementById('func')。innerHTML='undefined';
})();
如果:


func:
否。它不是函数。如果它是一个函数。它可能有一个返回值
var foo=if(…){…}
是一个完全的语法错误。这是一个关键词。请注意,
if()
在中。每个实际上都在一个函数中:
函数(i,扩展数据).
if
不是函数。什么使你认为它是一个函数?你可以在这里阅读语言规范中的语句::)谢谢。我现在明白了。
返回false
是否在那里工作?我知道使用
forEach
是没有用的,对
$不是很确定。每个
..@Andy从
$返回false。每个
都会停止循环。