let是es6的新語法,用來區域性變數和var類似但是let只在**塊裡有效,也就是塊作用域
變數提公升是什麼意思這裡很多小夥伴會理解錯
var a = 10;
func();
function func()
很奇怪這裡為什麼是undifined這就是變數提公升
上面的**等價於
var的變數提公升就是會先把var定義的變數提到**最前進行宣告,執行到指定指定**再進行賦值
var a = 10;
func();
function func()
並且要注意{}無法限制var
console.log(a); //a=10
console.log(b); //uncaught referenceerror: b is not defined
let 和 var區別有四點
1.let有暫時性死區(就是在宣告變數前無法使用)
let沒有變數提公升
let不能重複宣告
let有更小的作用域
宣告全域性變數
function vartest()
console.log(a); // 2
}function lettest()
console.log(a); // 1
}
相同點:
const 和let都是塊級作用域
不同點:
let 宣告的變數可以改變 const宣告的變數不能改變(這裡注意const是不可改變是指位址不可改變)
const 宣告時必須賦值
cosnt a;報錯 uncaught syntaxerror: missing initializer in const declaration
const obj =
console.log(obj);
obj.age=20;
console.log(obj);
當const賦值物件的時候是可以進行修改的
obj = {}; //報錯
arr= [''] //報錯
//
const arr = ;
arr.push(『test』)
console.log(arr);// array(1)
obj = {}; //報錯
arr= [''] //報錯
let var const的具體區別
if true console.log a a沒有被定義 這裡的乙個塊級作用域就是這if大括號內注意在定義變數的時候 無論是var,let還是const 都盡量都要先賦初始值,因為如果不賦初始值那麼undefined與任何數字進行加減乘除的時候結果都為nan 不了解變數提公升的小夥伴可以去 舉個例子...
let,var,const的使用區別
一 let宣告變數 1.let宣告的變數不會掛在window中,不會造成全域性變數的汙染 2.新增了乙個塊級作用域 以前只有函式作用域,全域性作用域 3.let是不允許重複宣告 4.let不會有宣告提前 只是人為看到的效果,實際上是有宣告提前,提前臨時性的死區中 cannot access num ...
nil Nil NULL NSNull 之間的區別
nil 是對objective c id 物件賦空值 例如 nsstring string nsstring stringwithformat test string nil 對於objective c 集合類物件 比如陣列物件,字典物件,當我們不需要再使用他們的時候,對他們release 的同時最...