变量声明

Posted hanson823

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了变量声明相关的知识,希望对你有一定的参考价值。


变量的声明方法分为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:常量声明,不能再此之前使用该常量,声明过该常量以后,不能重复声明相同的常量名称,该常量在内存里面的地址不变,可变的是该常量的值

以上是关于变量声明的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf引用片段传入参数

在一些片段之间填充对象变量的最佳方法

如何使用sublime代码片段快速输入PHP头部版本声明

GoLang学习之变量定义和初始化

Android片段中的手电筒 - SurfaceView

数学上相同的变量 - 一个破坏着色器而不是