1變量介紹
變量就是對(duì) 內(nèi)存地址的引用
var k; //聲明
k='kolento' //賦值
//以上代碼也等于如下 縮寫
var k = 'kolento'
//其他簡寫
var a=1,b=2,c=3
var a=b=c=1
變量聲明賦值后會(huì)在內(nèi)存中開辟一個(gè)空間存儲(chǔ)內(nèi)容苍碟,如果使用內(nèi)存地址來訪問賦值的 字符串非常麻煩酒觅,所以使用變量替代并且指向?qū)?yīng)的內(nèi)存地址獲取內(nèi)容。
注意:變量不能使用js關(guān)鍵字微峰。
2.變量提升
JS代碼在執(zhí)行之前有一個(gè)分析的過程舷丹,這個(gè)過程會(huì)處理我們的代碼,比如變量提升蜓肆。
var a = 1
console.log(a)
var class = b
//結(jié)果 :在沒有打印出a的情況下就報(bào)錯(cuò)了
//原因:變量提升颜凯,最后一行聲明提升到console.log之前
//demo1
console.log(a)// 打印undefined
var a= 1
//以上代碼會(huì)被解析為
var a;
console.log(a)
a=1
//demo2
if(false){
var a= 1
}
console.log(a) //打印 undefined谋币,也是變量提升的原因
3.其他聲明方式
ES6語法:let const
console.log(a) //undefined
var a = 1
console.log(b) //報(bào)錯(cuò)
let b =1
const c = 100 //定義常量,常量通常不可改變
const c=200 //報(bào)錯(cuò)
如果const的聲明賦值和修改
不在同一個(gè)塊作用域下則可以修改
const d = 1
{
const d = 2
console.log(d) //2
}
//使用const修改引用類型
const config={};
config.url='www'
console.log(config) //{url:'www'}
此處并沒有修改內(nèi)存地址只是修改了里面 的值症概,所以可以修改
let:定義變量蕾额,聲明會(huì)產(chǎn)生一個(gè)臨時(shí)的死區(qū)TDC,也就是 說必須在聲明之后才能使用彼城,沒有變量提升,是塊作用域 凡简。
const:定義常量,同let一樣必須先聲明后才能使用精肃。可以改變引用類型(對(duì)象 數(shù)組)的內(nèi)容帜乞,但實(shí)際上內(nèi)存地址沒有改變司抱。
4.作用域
a=1
console.log(1) //打印1 全局作用域
嚴(yán)格模式 'use strict' 下會(huì)報(bào)錯(cuò)
for(let i = 1;i<5;i++){ //塊作用域(花括弧)
console.log(i)
}
塊作用域可以防止對(duì)全局的變量進(jìn)行污染