变量声明
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:常量声明,不能再此之前使用该常量,声明过该常量以后,不能重复声明相同的常量名称,该常量在内存里面的地址不变,可变的是该常量的值
以上是关于变量声明的主要内容,如果未能解决你的问题,请参考以下文章