zoukankan      html  css  js  c++  java
  • var、let、const

    var的bug

    var 没有块儿级作用域
    for
    (var i=0;i<10;i++){ var a = 'guojing'; } console.log(a); //guojing console.log(i); //10

    for (var i = 0; i < 3; i++) {
      setTimeout(function () {
        console.log(i)
      }, 1000);
    }
    //输出三个3

    var 能重复定义变量

    必须使用严格模式即'use strict' 后才能使用let声明变量

    for(var i=0;i<10;i++){
        var a = 'guojing';
    }
    console.log(typeof a);    //undefined
    console.log(typeof i);    //undefined

    for
    (var i = 0; i < 3; i++) {   setTimeout(function () {     console.log(i)   }, 1000); } //输出1 2 3

    1.let声明的变量拥有块级作用域。

    2.let声明的全局变量不是全局对象的属性(见下面例子)。

    3.形如for (let x...)的循环在每次迭代时都为x创建新的绑定。

    4.用let重定义变量会抛出一个语法错误(SyntaxError)。

    5.let不能重复定义变量,不然浏览器会报错。

    var a =  'guojing';
    let b = 'huangrong';
    function aaa(){
        console.log(this.a);
        console.log(this.b);
    }
    aaa();
    输出:guojing    undefined

    const 用来定义常量

    1.声明时必须赋值

    2.不能重复定义

    3.不能重新给const变量赋值

    4。一般不给const修饰的变量初始化为一个对象,如果初始化为一个对象,const定义的是这个对象的引用,接下来自己理解会发生什么,引用不能变更,但是对象里面的属性都可以变更;

    参考:https://www.jianshu.com/p/4e9cd99ecbf5

    工欲善其事 必先利其器
  • 相关阅读:
    JChartFree创建饼形图
    JFreeChart设置点的颜色
    JChartFree使用散点图
    JChartFree常用数据集
    博客园安家了
    在Android中什么是异步执行;
    XmlPullParserException
    构造器的执行顺序
    Sqlite之contentProvider
    使用java获取歌曲的属性
  • 原文地址:https://www.cnblogs.com/fengyouqi/p/9570789.html
Copyright © 2011-2022 走看看