为什么 arr[0](var = first)没有明确地与 arr[i](计数器变量)进行比较?这里比较什么?
Why isn't arr[0] (var = first) getting compared to arr[i] (the counter variable) explicitly? What is getting compared here?
我的问题的几个部分:假设我的函数参数中有匹配的数字,为什么无论 for 循环计数器中的数字是多少,这段代码都输出 true,例如:
(var i = 54321; i < arr.length; i++)
设置为?此外,我可以在 var first = arr[0]
赋值中输入任何数字,例如 first = arr[12345];
并且输出仍然为真。我认为 arr[0]
正在与 arr[i]
进行比较,因此计数器需要是 0
或 1
。
看来我可以将任何数字放入计数器 和 第一个数组中,输出将始终为真。为什么是这样?这里到底发生了什么?
function isUniform(arr){
var first = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] !== first) {
return false;
}
}
return true;
}
isUniform(2,2,2,2); // any series of all matching numbers will output true.
这些都是我的问题。非常感谢任何答案。另外,这是我的第一个问题,也是一个相当新手的问题。请随时让我知道我在此处的论坛上做错了什么,如果有的话,以及我或任何人需要进行的任何编辑。谢谢。
你被undefined咬了。
让我们深入挖掘一下。
function isUniform(arr){
var first = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] !== first) {
return false;
}
}
return true;
}
isUniform(2,2,2,2); // any series of all matching numbers will output true.
您正在传递 4 个参数,但只读取一个(JavaScript 没有抱怨),并将其称为 arr。因此,在您的示例中,arr == 2。
等于 2,arr[0] 产生未定义。 arr.length 也是未定义的。
所以 for 循环退出,你总是得到 true。您应该使用特殊的 arguments
参数:
function isUniform(){
var first = arguments[0];
for(var i = 1; i < arguments.length; i++){
if(arguments[i] !== first) {
return false;
}
}
return true;
}
isUniform(2,2,2,2); // yields true
isUniform(2,3,2,2); // yields false
参考here:
我的问题的几个部分:假设我的函数参数中有匹配的数字,为什么无论 for 循环计数器中的数字是多少,这段代码都输出 true,例如:
(var i = 54321; i < arr.length; i++)
设置为?此外,我可以在 var first = arr[0]
赋值中输入任何数字,例如 first = arr[12345];
并且输出仍然为真。我认为 arr[0]
正在与 arr[i]
进行比较,因此计数器需要是 0
或 1
。
看来我可以将任何数字放入计数器 和 第一个数组中,输出将始终为真。为什么是这样?这里到底发生了什么?
function isUniform(arr){
var first = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] !== first) {
return false;
}
}
return true;
}
isUniform(2,2,2,2); // any series of all matching numbers will output true.
这些都是我的问题。非常感谢任何答案。另外,这是我的第一个问题,也是一个相当新手的问题。请随时让我知道我在此处的论坛上做错了什么,如果有的话,以及我或任何人需要进行的任何编辑。谢谢。
你被undefined咬了。 让我们深入挖掘一下。
function isUniform(arr){
var first = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] !== first) {
return false;
}
}
return true;
}
isUniform(2,2,2,2); // any series of all matching numbers will output true.
您正在传递 4 个参数,但只读取一个(JavaScript 没有抱怨),并将其称为 arr。因此,在您的示例中,arr == 2。
等于 2,arr[0] 产生未定义。 arr.length 也是未定义的。
所以 for 循环退出,你总是得到 true。您应该使用特殊的 arguments
参数:
function isUniform(){
var first = arguments[0];
for(var i = 1; i < arguments.length; i++){
if(arguments[i] !== first) {
return false;
}
}
return true;
}
isUniform(2,2,2,2); // yields true
isUniform(2,3,2,2); // yields false
参考here: