[英]Global variable doesn't work-largestString() which takes an array of strings as input and returns the largest string in this array
<p id="longeststring">
</p>
<script>
var arr=[];
var longest=arr[0];
function largestString(arr)
{
for (var i=0;i<arr.length;i++)
{if(arr[i].length>=longest.length)
{longest=arr[i]}
}
return longest;
}
z=["what","am","I","doing","now"]
document.getElementById("longeststring").innerHTML=largestString(z)
</script>
So when var longest=arr[0] is inside the function it works, but when I take it outside, it shows"longest not defined".因此,当 var long=arr[0] 在 function 内时,它可以工作,但是当我把它带到外面时,它显示“最长未定义”。 Why is that?
这是为什么? I thought by putting it outside the function, the variable "longest" could update itself.
我认为通过将其放在 function 之外,变量“最长”可以自行更新。
Thank you in advance.先感谢您。
When you put the expression var longest=arr[0];
当你把表达式
var longest=arr[0];
outside the function, the arr
refers to the global variable.在 function 之外,
arr
指的是全局变量。 Its value is set to []
, so value of its first item is undefined.它的值设置为
[]
,因此它的第一项的值是未定义的。
But if you put the expression var longest=arr[0];
但是如果你把表达式
var longest=arr[0];
inside the scope, the arr
refers to the parameter, so it will have the correct value.在 scope 内部,
arr
指的是参数,所以它会有正确的值。
@bran0's answer is correct. @bran0 的回答是正确的。 I suggest you can write
var longest = ""
instead of var longest = arr[0]
because arr
's length may be zero and longest
will be undefined in that case.我建议你可以写
var longest = ""
而不是var longest = arr[0]
因为arr
的长度可能为零,并且在这种情况下longest
将是未定义的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.