这意味着什么在Javascript“typeof(arguments [0])”

时间:2014-11-12 09:42:32

标签: javascript arguments typeof

我在我的代码中找到了这个,可能有人在我之前做过。 我无法得到这行代码究竟是做什么的。论证[0]会在这里做什么。

        typeof(arguments[0])

整个代码是这样的:

 var recommendedHeight = (typeof(arguments[0]) === "number") ? arguments[0] : null;

问题是我总是recommendedHeightnull。任何想法何时返回任何其他值?

2 个答案:

答案 0 :(得分:6)

JavaScript中的每个功能都会自动收到两个附加参数:thisargumentsthis的值取决于调用模式,如果使用.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。

可能参数是包含一些属性的数组,其第一个记录应包含建议的高度。这就是为什么它应该是一个数字。