考點一. 變量提升
關於變量提升和this
es6箭頭函數的this
第一.
this 指向當前的環境
this的詳細介紹
如果搭配了那個箭頭函數的話
第二
.很奇葩的變量先初始化 賦值在後面的,var bar=2初始化在前,賦值在後
第三
自增自減運算符優先於return
四 同樣關於自增自減運算符
第四
就是for循環中的“ ”用法和【“”】用法
Problem Explanation Note: dot-notation will cause errors in this challenge.
[square-bracket] notation must be used to call a variable property name.
The following code will not work.
Hint 1:
for (let user in obj) {
if (obj.user.online === true) {
//code
}
}
Hint 2
Example 2 demonstrates how using [square-bracket] notation the code will be executed.
for (let user in obj) {
if (obj[user].online === true) {
//code
}
}
總結就是 當那個是var出來的變量的時候 記得一定要【】.
但我也不知道這特麼的 . 和 [] 是要怎麼搞的,以後再說
反正就是必須使用[square-bracket]符號來調用變量屬性名稱。
第五 點語法和方括號語法
[] 和 .
- 點語法的最大弊端是不能加變量
- 方括號可以加變量和對象,但如果對象是字符串需要加雙引號“ ”
第六
動態的屬性
第七
引用類型的賦值
第八
- 基本類型和引用類型
ECMAScript 中所有函數的參數都是按值傳遞的。
檢測類型的方法
第九
執行環境的類型總共只有兩種——全局和局部(函數),但還是有其他辦法來延長作用域鏈。
第十
深入瞭解塊級作用域
es6的解決方法是let,JavaScript的花括號起不到塊級作用,if的變量提升會導致外面的變量失效
第十
函數聲明與函數表達式
第十一
函數內部屬性
- 在函數內部,有兩個特殊的對象:arguments 和this。
arguments 的主要用途是保存函數參數,但這個對象還有一個名叫callee 的屬性,該屬性是一個指針,指向擁有這個arguments 對象的函數。
請看下面這個非常經典的階乘函數:
function factorial(num){
if (num <=1) {
return 1;
} else {
return num * factorial(num-1)
}
}
爲消除這種緊密耦合的現象,可以像下面這樣使用arguments.callee:
function factorial(num){
if (num <=1) {
return 1;
} else {
return num * arguments.callee(num-1)
}
}
請讀者一定要牢記,函數的名字僅僅是一個包含指針的變量而已。
屬性類型
數據屬性 訪問器屬性
- 關於訪問器的東西還很多沒搞懂