zoukankan      html  css  js  c++  java
  • 变量声明


    变量的声明方法分为3种,var、let、const、window对象下的全局变量、function
     var:声明的变量具有可提升性
     let:声明块内变量,不可提升
     const:声明常量,在内存中的地址不变,改地址中的值可变
     function:声明一个函数

    1 console.log('undefined',a);    //值为undefined
    2 window.a = 1;
    3 console.log('var',a);    //如果不使用下面的var声明一下变量a,这时候,会报错,a is not defined;下面使用var声明以后,该处的值为:1,使用的是window下面属性a 的值
    4 var a = 2 ;    //通过赋值操作,改变变量的值
    5 console.log('window',window.a);    //此时,变量a的值已经被改变,值为:2

    //注意:在使用var声明变量时,为防止出现全局变量被污染,可使用闭包函数,把全局变量转换成局部变量,防止变量污染

    //let
    //在同一作用域下面的变量,值可被改变

    1 let b = 10;
    2 b = 11
    3 
    4 function test() {
    5 let b = 12;
    6 console.log('内部',b);    //该处,同样都是变量b,只因在方法体内使用let声明了一次,本着就近原则,这时候就找到了在同一作用域下面的变量b,故值为:12
    7 }
    8 test()
    9 console.log('外部',b);    //该处,由于let 不剧本变量的提升性,即使在方法内重新声明以后也不会改变外部已经使用let 声明变量的值

     改变const的值

    //console.log(obj); 不能在未声明常量的前面使用该常量,报错obj is not defined

    const obj = {
    name:'张三',
    age:18
    }
    obj['name'] = '李四'
    console.log(obj);
    //obj = {a:3}
    //console.log(obj); //报错,不允许给常量赋值

    总结:
    var、window.变量名、function,声明的变量都具有可提升性;
    var:声明的变量,可是该次声明之前使用该变量,值为:undefined
    let:声明的变量,不能在之前使用该变量,如使用,会报错:is not defined;let不具有提升性,在作用域内部和外部,分别定义相同的变量名,通过运行,发现,在作用域内部的变量并没有改变外部变量的值,故:使用let声明的变量不具有提升性
    const:常量声明,不能再此之前使用该常量,声明过该常量以后,不能重复声明相同的常量名称,该常量在内存里面的地址不变,可变的是该常量的值

  • 相关阅读:
    Js获取当前日期时间及其它操作
    Java JDBC 基础知识
    java自动创建多级目录
    [Java]读取文件方法大全
    table固定首行(二)
    table固定首行(一)
    DIV滚动条
    查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程
    DWZ SSH2 菜单树--使用Struts2 标签(iterator/set/if 组合使用)
    synchronized与lock,哪个效率更高
  • 原文地址:https://www.cnblogs.com/Hanson823/p/12984472.html
Copyright © 2011-2022 走看看