函数返回零,但为什么当方法拼写错误时它不会失败?

Jah*_*l14 0 javascript function

在for循环中:counter <(x.lenght)拼写错误,但函数返回零.当更正为x.length时,函数返回正确的B数,3.1)为什么返回零?2)为什么javascript没有捕获到这个错误?3)对于未来,我可以采取哪些措施来确保捕获这些类型的错误?

function countBs(x){
  var lCounter = 0;
  for (var counter = 0; counter < (x.lenght); counter++){
    if((x.charAt(counter)) == "B"){
        lCounter++;
       } 
  }  
  return lCounter;   
}
console.log(countBs("BCBDB"));
Run Code Online (Sandbox Code Playgroud)

sli*_*ype 6

访问x.lenght正在返回,undefined导致for循环立即终止.因此lCounter返回初始值.

您可以使用in关键字来检查对象中是否存在属性:

if ( 'lenght' in x ) {
  ...
Run Code Online (Sandbox Code Playgroud)

  • `x`显然是一个字符串,所以`in`不会对它起作用. (4认同)