对于返回结果的变量使用let是否安全?

时间:2017-02-15 22:48:32

标签: javascript ecmascript-6

我想知道在这种情况下使用let是否安全:

function test() {
  let result = 0;
  result++;
  return result;
}

2 个答案:

答案 0 :(得分:4)

是的,它是完全安全的,它是声明一个你后来想要作为函数值返回的局部变量的预期方法。因为Javascript是一种垃圾收集语言,所以局部变量可以安全地包含任何类型的值。它可以有一个像你所示的简单原语,或者甚至可以包含这样的对象:

function test() {
  let result = {cnt: 0};
  result.cnt++;
  return result;
}

let obj = test();
console.log(obj);     // shows {cnt: 1}

这是安全的,因为虽然你返回一个在函数范围内声明的对象,并且当函数返回时函数作用域将超出作用域,因为Javascript是一种垃圾收集语言,该对象将单独存活无论函数的返回值是否分配给函数作用域之外的任何内容。

答案 1 :(得分:1)

捎带上面发表的评论   Const - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const是让自己以及正在阅读代码的其他人知道“此变量不会被重新分配或修改”的好方法。

让 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let让人们知道这个变量最有可能被重新分配或修改。

在你的情况下使用let是完全可以的!