zoukankan      html  css  js  c++  java
  • ES6初探,变量的声明

    JS中关于变量的声明、大家首先想到的肯定是var

    1 var mytest = "hello world"

    对于上面这样的声明相信大家已经见得太多了

    那么今天博主骑着自己的宝马自行车就为了早点分享带大家了解的就是ES6声明变量的几种新方式:

    1.let

    2.const

    那么今天我们先来说说第一种、let

    let声明变量、他的用法和var类似

    但是声明出来的变量只在它所在的块作用域有效

    1 {
    2     var test1 = "hello world";
    3     let test2 = "hello world";
    4 }
    5 console.log(test1);//hello world
    6 console.log(test2);//Uncaught ReferenceError: test2 is not defined

    上面声明的两个变量是用var 和 let

    可以看出let声明的变量只在块作用域中起了效果、出了作用域就找不到let声明的变量了

    再来看一段代码

    1 for (var i = 0; i < 10; i++) {}
    2 console.log(i);//10
    3 
    4 for (let j= 0;j < 10;j++) {}
    5 console.log(j);//Uncaught ReferenceError: j is not defined

    用var生成的变量会依然存在的、但是用let声明的变量作用域之外是找不到的

    也就是说明let只会在自己的代码块作用域内有效、

    有时候我们如果用var声明变量会无意之间占用一些内存,损耗性能

     

    再说到“变量提升”的问题(我理解这个词就认为他归到闭包的一类问题)

    1 console.log(mytest1); // undefined
    2 console.log(mytest2); // Uncaught ReferenceError: bar is not defined
    3 
    4 var mytest1 = 2;
    5 let mytest2 = 2;

    undefined和not defined 的区别大家都还清楚吗?

    没清楚也没关系、我在这里再为大家解释一下

    undefined是察觉有这个变量但是还没有赋值(因为我们的赋值语句在打印的下方)

    not defined 是察觉压根都没有定义这个变量

    所以let并不会发生"变量提升"

    好了到这里先吃个明星虾

     

    let还有这样一个特性:暂时性死区

    1 var temp = 123;
    2 
    3 if (true) {
    4   temp = 'abc'; // Uncaught ReferenceError: temp is not defined
    5   let temp;
    6 }

    ES6明确规定,如果区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。

    如果我们看到了这一特性、发现如果这样的话、typeof也是会报错的

    1 typeof x; //Uncaught ReferenceError: x not defined
    2 let x;

    还有let的最后一个特性

    let不允许在相同作用域内,重复声明同一个变量。

    1 var b =4;
    2 var b= 5;
    3 console.log(b);//5
    4 
    5 let a =4;
    6 let a= 5;
    7 console.log(a);//Uncaught SyntaxError: Identifier 'a' has already been declared

    好了,对于let的一些特性和用法就先说这么多、老板又催我干活啦

  • 相关阅读:
    LAMP动态网站安装脚本
    图片上传
    如何用qq代理发送邮件
    初识c#
    Eclipse使用技巧
    maven中 install的install:install的区别
    Git的各种状态
    phpStorm中Structure窗口中的符号代表的意思
    Apache+PHP+MySQL+phpMyAdmin+WordPress搭建
    Session重点整理
  • 原文地址:https://www.cnblogs.com/webxiaojian/p/5580436.html
Copyright © 2011-2022 走看看