Skip to content

Latest commit

 

History

History
137 lines (111 loc) · 1.64 KB

let.md

File metadata and controls

137 lines (111 loc) · 1.64 KB

let 和 const 命令

let 命令

基本用法

  • 定义变量
let a = 1;
"use strict"; // 后面省略此行
var a = 1;
  • 多层作用域同名变量
{
  let i = 0;
  {
  	let i = 1;
    {
  	  let i = 2;
      {
  	  	let i = 3;
  	  }
  	}
  }
}
{
  var i = 0;
  {
    var _i = 1;
    {
      var _i2 = 2;
      {
        var _i3 = 3;
      }
    }
  }
}
  • 常见的异步for循环计数器
for (let i = 0; i < 10 ; i+= 1) {
  setTimeout(function() {
  	console.log(i);
  }, 1000);
}
var _loop = function _loop(i) {
  setTimeout(function () {
    console.log(i);
  }, 1000);
};

for (var i = 0; i < 10; i += 1) {
  _loop(i);
}
  • for循环变量是一个父作用域,循环体内部是一个单独的子作用域
for (let i = 0; i < 10; i += 1) {
  let i = 'abc';
  console.log(i);
}
for (var i = 0; i < 10; i += 1) {
  var _i = 'abc';
  console.log(_i);
}

const 命令

基本用法

  • 定义变量
const a = 1;
a = 2;
function _readOnlyError(name) { throw new Error("\"" + name + "\" is read-only"); }

var a = 1;
a = (_readOnlyError("a"), 2);

其他场景

  • 函数内定义默认参数值
function fn(arg = 1) {
}
function fn() {
  var arg = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
}
  • 函数声明会导致变量提前
{
  let a = 'secret';
  function f() {
    return a;
  }
}
{
  var f = function f() {
    return a;
  };
  var a = 'secret';
}