简体   繁体   English

全局变量不起作用-largestString() 它将字符串数组作为输入并返回此数组中的最大字符串

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM