是在功能范围内还是在块范围内?

时间:2019-03-31 17:51:46

标签: javascript

我的createRandomList函数中的randomNumber变量是作用域还是块作用域? for循环块的i变量声明是作用域还是函数作用域?在所有类型的循环中,如果我使用let键在for循环的括号部分内声明变量(for(let i = 0; i < something.length; i += 1) { // something goes in here },则该变量是块作用域的,对吗?最后一个问题,在for循环中,整个语句是循环,对吗?循环不仅是代码块,对吗?我问,因为有人将整个事物称为循环,而另一些人则将代码块称为循环。

function random100() {
  return Math.floor(Math.random() * 100) + 1;
}

function createRandomList() {
  let arr = []
  for(let i = 0; i < 10; i += 1) {
    let randomNumber = random100() ; 
    arr.push(randomNumber) ;
    
  }
  return arr ;
}

/* 
console.log(randomNumber) ; <---- Does this not work because you can't access a variable in the local scope from outside the local scope or because let is block scoped? 
*/ 

let myRandomList = createRandomList() ;

for (let i = 0; i < myRandomList.length; i += 1) {
    console.log("Item " + i + " in the array is " + myRandomList[i] + ".") ;
}

1 个答案:

答案 0 :(得分:2)

  

我的createRandomList函数中的randomNumber变量是作用域还是块作用域?

是的

  

我的for循环块的i变量声明是作用域还是函数作用域?

块的作用域为for循环。

  

在for循环中,整个语句都是循环,对吧?

是的,有点。 for的变量声明是在要在其中执行循环主体的块作用域(实际上是EnvironmentRecord)上初始化的。