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