zoukankan      html  css  js  c++  java
  • es6中的let声明变量与es5中的var声明变量的区别,局部变量与全局变量

    自己通过看typescript官方文档里的let声明,与阮一峰老师翻译的的es6学习文档,总结以下三点

    1、var声明可以多次重复声明同一个变量,let不行

    2、let变量只在块级作用域里面有效果,var 变量不存在块级作用域(块级作用域指用{}包装的代码块,个人理解)

    3、let变量不会声明提前,var变量会

    以下是具体例子

    for(var i=0;i<10;i++){
    setTimeout(function(){console.log(i)},1000);
    }
    

    由于var声明的变量会声明提升var i 其实就是一个全局变量,console.log(i)里面的i也是全局变量,i在异步函数执行前已经变为了10

    所以结果就连续输出了十个10

    for(let i=0;i<10;i++){
    setTimeout(function(){console.log(i)},i*1000);
    }
    

    由于let声明了一个局部变量,console.log(i)里面的i是局部变量,每次循环时输出的都是一个局部变量,所以

    结果就连续输出从0到9

    let i;
    for(i=0;i<10;i++){
    setTimeout(function(){console.log(i)},i*1000);
    }
    

    输出的是全局变量,所以输出十个10

    for(var i=0;i<10;i++){
    setTimeout((function(i){console.log(i)})(i),i*1000);
    }
    

    (function(i){console.log(i)})(i)将全局变量传入方法里,变成了一个局部变量,然后console.log(i)就是一个局部变量

    所以结果是0到9;

    方法里面可以把方法当做参数传入,这时的参数如果是在()里面定义的就是局部变量,在闭包里面有用;

    var a = function(){
    console.log(11);
    }
    var b = function(a){
    a();
    }
    b(a);
    

    参数a是一个函数,结果是11。

    var b = function(a){
    a();
    }
    b( function(){
    console.log(11);
    });
    

    传递了一个匿名函数,结果也是11。

    var b = function(a){
    a();
    }
    b( function a(){
    console.log(11);
    });

    a();

    传递并声明了一个函数a; a是一个全局函数,结果也是11,此时的函数声明相当于在外面声明的。

    var b = function(a){
    a();
    }
    b( var a=function (){
    console.log(11);
    });
    

    报错在function的()里面的值是访问的外部的值,在这里面定义的是局部变量,不能够访问,会报错,所以这里不能声明变量。

    var b = function(a){
    a();
    }
    b( a=function (){
    console.log(11);
    });
    
    11var b = function (a) {
      a();
    }
    b(function () {
      return function () {
        console.log(11);
      }
    }());
    

    也可以传递一个自执行函数

    学而不思则罔,思而不结则殆,结而不看,一事无成
  • 相关阅读:
    hdu 1086 You can Solve a Geometry Problem too 求n条直线交点的个数
    2019 上半年 南昌网络赛
    第十章 存储过程和函数
    第九章 Mysql函数
    第八章 Mysql运算符
    第七章 插入、更新与删除数据
    第六章 查询数据
    第五章 触发器
    第四章 视图
    第三章 索引
  • 原文地址:https://www.cnblogs.com/windseek/p/5949241.html
Copyright © 2011-2022 走看看