IF是JavaScript中的一个函数吗?
问题描述:
我一直在JavaScript中探索范围。消息来源指出,作用域是以函数分隔的,而不是像大多数语言那样用块分隔。IF是JavaScript中的一个函数吗?
我把一些代码显示在一些代码我写的,因为我的一些功能中之功能尚不清楚(我),我想看到的范围是如何工作的这些。
令人大跌眼镜的是,在$ .getJSON内$。每个功能的函数,如果(){}子句,显然,作为一个函数处理。我会认为它是一个块。
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(){}是一个函数,什么是块?
答
的功能被分配给仅通过其范围,该范围是保证包括其中函数中声明的范围的限制变量。
if() { }
不是函数...它是一个块。它没有在你的例子中显示的原因是因为你有return false
在日志发生之前就会中断,并且当日志发生时,变量仍然是未定义的。
(function() {
if (true) var x = "if declared variable"; /* block declaration */
document.getElementById('if').innerHTML = x ? x : 'undefined';
(function() {
var y = "function declared variable";
})();
if (typeof y != 'undefined')
document.getElementById('func').innerHTML = y
else
document.getElementById('func').innerHTML = 'undefined';
})();
if: <span id="if"></span>
<br>
func: <span id="func"></span>
没有。这不是一个功能。如果它是一个功能。它可能有一个返回值。 'var foo = if(...){...}'是一个平坦的语法错误。这是一个关键字。并注意你的.each里面的'if()'实际上在一个函数内:'function(i,xdata)...' –
'if'不是一个函数。是什么让你认为这是一个功能? –
你可以在这里阅读有关的语言规范语句:http://www.ecma-international.org/ecma-262/5.1/#sec-12 :) – Goot