我在我的代码中找到了这个,可能有人在我之前做过。 我无法得到这行代码究竟是做什么的。论证[0]会在这里做什么。
typeof(arguments[0])
整个代码是这样的:
var recommendedHeight = (typeof(arguments[0]) === "number") ? arguments[0] : null;
问题是我总是recommendedHeight
为null
。任何想法何时返回任何其他值?
答案 0 :(得分:6)
JavaScript中的每个功能都会自动收到两个附加参数:this
和arguments
。 this
的值取决于调用模式,如果使用.apply()
,则可以是全局浏览器上下文(例如,窗口对象),函数本身或用户提供的值。 arguments
参数是传递给函数的所有参数的类数组对象。例如,如果我们定义了以下函数..
function add(numOne, numTwo) {
console.log(arguments);
return numOne + numTwo;
}
并且像这样使用它。
add(1, 4);
这当然会返回5,并且还会在控制台[1, 4]
中显示arguments数组。这允许你做的是传递和访问比你的函数定义的更多参数,强大的东西。比如..
add(1, 4, "extra parameter 1", "extra parameter 2", "extra parameter n");
我们会在控制台[1, 4, "extra parameter 1", "extra parameter 2", "extra parameter n"]
中看到。现在,在我们的功能中,我们可以通过"extra parameter 1"
访问arguments[2]
。
您的代码检查参数数组中第一项的类型(例如,数字,字符串等),并使用三元运算符进行检查。
扩展代码可能会更清晰:
var recommendedHeight;
//if the first argument is a number
if ( typeof(arguments[0]) === "number" ) {
//set the recommendedHeight to the first argument passed into the function
recomendedHeight = arguments[0];
} else {
//set the recommended height to null
recomendedHeight = null;
}
希望有所帮助!
答案 1 :(得分:0)
这意味着:
如果变量类型的参数[0]是一个数字,那么recommendedHeight获取参数[0]的值,否则将其设置为null。
可能参数是包含一些属性的数组,其第一个记录应包含建议的高度。这就是为什么它应该是一个数字。