码迷,mamicode.com
首页 > 其他好文 > 详细

变量声明

时间:2020-05-28 23:10:16      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:log   func   let   声明变量   地址   外部变量   obj   定义   nbsp   


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

变量声明

标签:log   func   let   声明变量   地址   外部变量   obj   定义   nbsp   

原文地址:https://www.cnblogs.com/Hanson823/p/12984472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!