When should I use let and var? [closed]

拜拜、爱过 提交于 2019-11-28 16:27:37

问题


EDIT: Please read the question! I already know the difference. This is not a duplicate.

Obviously, right now I should always be using the var key word as let isn't supported in everything.

When the let keyword has better support (say, I'm writing a Node application in a couple years time which uses Harmony), when should I use the let keyword vs the var keyword?

I understand the difference —var is for function scoping while let is for block scoping—but I'm looking for something like "always use the let keyword" or "use the var keyword at the top of functions, but the let keyword in blocks like for loops".


回答1:


I would say that you should, as a principle, use let whenever it is not inconvenient to do so. Such as:

for (let i = 0; i < 100; i++) {
    // Do something
}

if (condition) {
    let msg = a + b + c;
    console.log(msg);
    alert(msg);
}

The advantages to this approach is:

  1. Less risk of overriding some global variable use for something else
  2. Less risk of memory leaks due to variables staying in memory long after they have become irrelevant



回答2:


Use let as a general rule, and var on occasion.

Block scoping is the standard and most readable choice, and will make debugging easier. Block scoping makes it easy to see exactly where a variable is in scope. Function scoping makes things a lot less apparent, and much easier to accidentally introduce bugs with scoping mistakes.

In general, the smaller the scope you can use, the better. Thus let over var.

In particular, it helps deal with the endless problem of closing over variables and not realising their value will change before the closure is executed:

for (var i = 1; i <= 5; i++) {
  var item = document.createElement("LI");
  item.appendChild(document.createTextNode("Item " + i));

  let j = i;
  item.onclick = function (ev) {
    alert("Item " + j + " is clicked.");
  };
  list.appendChild(item);
}



回答3:


Well the answer is quite simple use var if you need function scoping and let if you need block scoping.



来源:https://stackoverflow.com/questions/21906133/when-should-i-use-let-and-var

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!