1.const是對(duì)let的一個(gè)增強(qiáng),它能阻止對(duì)一個(gè)變量再次賦值。
2.
1)for (var i = 0; i < 10; i++) {
setTimeout(function() { console.log(i); }, 100 * i);
}
打印結(jié)果:10 10 10 10 10 10 10 10 10 10
2)for (var i = 0; i < 10; i++) {
(function(i) {
setTimeout(function() { console.log(i); }, 100 * i);
})(i);
}
用立即執(zhí)行函數(shù)捕獲一個(gè)i參數(shù)
打印結(jié)果:0 1 2 3 4 5 6 7 8 9
結(jié)論:
在setTimeout的例子,我們最后需要使用立即執(zhí)行的函數(shù)表達(dá)式來獲取每次for循環(huán)迭代里的狀態(tài)垂寥。
實(shí)際上凌摄,我們做的是為獲取到的變量創(chuàng)建了一個(gè)新的變量環(huán)境浪秘。
當(dāng)let聲明出現(xiàn)在循環(huán)體里時(shí)擁有完全不同的行為。 不僅是在循環(huán)里引入了一個(gè)新的變量環(huán)境丁眼,
而是針對(duì) 每次迭代都會(huì)創(chuàng)建這樣一個(gè)新作用域筷凤。 這就是我們?cè)谑褂昧⒓磮?zhí)行的函數(shù)表達(dá)式時(shí)做的事
,所以在 setTimeout例子里我們僅使用let聲明就可以了苞七。
3.擁有塊級(jí)作用域的變量的另一個(gè)特點(diǎn)是藐守,它們不能在被聲明之前讀或?qū)憽?/h4>
a++; // illegal to use 'a' before it's declared;
let a;
a++; // illegal to use 'a' before it's declared;
let a;
4.作用域永遠(yuǎn)都是任何一門編程語言中的重中之重挪丢,因?yàn)樗刂浦兞颗c參數(shù)的可見性與生命周期。
5.JS并不支持塊級(jí)作用域(如for ,if)卢厂,它只支持函數(shù)作用域
6.const擁有與 let相同的作用域規(guī)則乾蓬,但是不能對(duì)它們重新賦值。
7.typeScript允許你將對(duì)象的成員設(shè)置成只讀的.
? ? 所有變量除了你計(jì)劃去修改的都應(yīng)該使用const
9.接口:接口就好比一個(gè)名字足淆,用來描述下面例子里的要求巢块。TypeScript的核心原則之一是對(duì)值所具有的shape進(jìn)行類型檢查。接口的作用就是為這些類型命名和為你的代碼或第三方代碼定義契約巧号。
interface ?LabelledValue {
label?: string;
}
function ?printLabel ?(labelledObj : LabelledValue){
console . log(labelledObj .?label);
}
let ?myObj = {size : 10, label : "Size 10 Object"};
printLabel(myObj);
我們只會(huì)去關(guān)注值的外形族奢。 只要傳入的對(duì)象滿足上面提到的必要條件,那么它就是被允許的丹鸿。
10.最簡單判斷該用readonly還是const的方法是看要把它做為變量使用還是做為一個(gè)屬性越走。 做為變量使用的話用const,若做為屬性則使用readonly靠欢。
11.接口描述了類的公共部分廊敌,而不是公共和私有兩部分。 它不會(huì)幫你檢查類是否具有某些私有成員门怪。
12.接口描述了類的公共部分骡澈,而不是公共和私有兩部分
13.類:
1)引用任何一個(gè)類成員的時(shí)候都用了this。 它表示我們?cè)L問的是類的成員掷空。
2)constructor是一個(gè)對(duì)象創(chuàng)建時(shí)會(huì)自動(dòng)執(zhí)行的成員函數(shù)肋殴。
3)protected成員在派生類中仍然可以訪問
4)TypeScript使用的是結(jié)構(gòu)性類型系統(tǒng)。
5)當(dāng)成員被標(biāo)記成private時(shí)坦弟,它就不能在聲明它的類的外部訪問
6)TypeScript里护锤,成員都默認(rèn)為public,即成員是可見的酿傍。
7)用new構(gòu)造了Greeter類的一個(gè)實(shí)例烙懦。 它會(huì)調(diào)用之前定義的構(gòu)造函數(shù),創(chuàng)建一個(gè)Greeter類型的新對(duì)象赤炒,并執(zhí)行構(gòu)造函數(shù)初始化它氯析。
8)如果其中一個(gè)類型里包含一個(gè)private成員,那么只有當(dāng)另外一個(gè)類型中也存在這樣一個(gè)private成員可霎, 并且它們都是來自同一處聲明時(shí)魄鸦,我們才認(rèn)為這兩個(gè)類型是兼容的。
9)構(gòu)造函數(shù)也可以被標(biāo)記成protected癣朗。 這意味著這個(gè)類不能在包含它的類外被實(shí)例化拾因,但是能被繼承