美文网首页
数据类型let

数据类型let

作者: 元宇宙编程 | 来源:发表于2019-12-24 17:01 被阅读0次

声明方式:
let:
1、只要后面有let声明,不管使用什么引用foo变量都会报错
2、ES6规范明确规定,如果代码块出现let、const声明,那么一旦形成了封闭作用域,在声明之前使用就会报错
3、不允许全局访问局部声明的变量/对象
const:
1、使用它声明之后,必须在声明的时候同时赋值
2、声明之后“不允许”更改存在的值,简而言之就是不允许修改内存地址

var str = "Hello World~!";
let str = "World~!";
console.log(str);

结果:Uncaught SyntaxError: Identifier 'str' has already been declared
解释:不能重复声明变量

  • ES6与ES5闭包的写法

    //ES5写法
    (function(){
      console.log("a");
    })();
    
    //ES6写法
    {
      console.log("b");
    }
    
    {
      var a = 10;
      let b = 11;
    }
    console.log(a);
    console.log(b);
    

结果: 10
Uncaught ReferenceError: b is not defined
解释:{}对于ES6是闭包,对于ES5不是闭包

 var arr = [];
 for(var i = 0;i < 10;i++){//i++ 10
    arr[i] = function(){
    console.log(i);//这个console.log()这句代码在ES5中是没 
   有执行的
   }
 }
 arr[6]();//在调用时,才去获取 i ,i此时已经是10

结果:10
解释:console.log()这句代码在ES5中是没有执行的

  var arr = [];
  for(let i = 0;i < 8;i++){//i++ 10
    arr[i] = function(){
    console.log(i);
   }
 }
arr[5]();//

结果:5
解释:console.log()这句代码在ES6中是是执行的

console.log(foo);
var foo = 2;

结果: undefined
解释: 这里会发生变量提升,也就是我们JS运行的时候,变量foo已经存在了,只是说没有赋值

console.log(bar);
let bar = 10;

结果: Cannot access 'bar' before initialization
解释: let不存在变量提升,所以在用到的时候,会抛出一个错误“bar is not defined”

var foo = 100;
if(true){
foo = "abc";
//在let声明变量"foo"之前,都属于变量“foo”的“死区”
 let foo;
}

结果:Cannot access 'foo' before initialization
解释:ES6规范明确规定,如果代码块出现let、const声明,那么一旦形成了封闭作用域,在声明之前使用就会报错

//typeof检测变量类型
 typeof foo;
 let foo;

结果:Cannot access 'foo' before initialization
解释:只要后面有let声明,不管使用什么引用foo变量都会报错

 function demo(num){
     let num;
}

结果:Identifier 'num' has already been declared
解释: 这里使用let声明,同样属于重复声明变量,所
以会报错

如果需要更多帮助,请关注公众号

相关文章

  • js 2022经典面试题汇总

    1.JS数据类型有哪些 2.var、let、const区别 var存在变量提升,而let、const没有 let、...

  • TypeScript

    1)原始数据类型 let a:string = "哈哈"; 2)任意类型: let b:any 3)类型推论:没指...

  • TypeScript学习笔记

    数据类型基本数据类型(undefined和null可以赋值给任何基础类型) let str: string = '...

  • swift4 基本

    swift中可变与不可变 1、不可变使用 let 修饰,swift语言可以隐式推断数据类型 let money =...

  • iOS中无损放大图片

    // 1.创建Transform orginalImage的数据类型为CIImage let scale = i...

  • swift-01基本语法

    变量: var 常量: let 格式: 修饰符 变量/常量名称: 数据类型 = 值

  • 3小时入门javascript

    JS基本数据类型及变量声明在js中有三种声明变量的方式:var let const,let var const的区...

  • 前端面试题js-【持续更新】

    一、数据类型 二、ES6 1. let、const、var的区别 (1)块级作用域:块作用域由 { }包括,let...

  • typescript学习-基础类型

    typyscript 学习笔记---基础数据类型 1. boolean 声明方式: let b : boolean...

  • 05-JavaScript数组

    JavaScript数组 专门用于存储一组数据的,不是基本数据类型,是引用数据类型(对象类型) 创建数组let 变...

网友评论

      本文标题:数据类型let

      本文链接:https://www.haomeiwen.com/subject/temcoctx.html