今天開學從新開始再看一遍紅寶書,上學期看了一遍沒看懂(尷尬。。),從新開始仔細梳理了一下,寫一下今天的感悟。html
1.var聲明的變量會自動被添加到最接近的環境中數組
function add (num1,num2) { var sum = num1 + num2; return sum; } alert(sum);// sum不是有效的變量,無效會致使錯誤 function add (num1,num2) { sum = num1 + num2; return sum; } alert(sum);// sum有效
2.Ecmascript定義了六種數據類型,包括五種簡單數據類型(null,number,string,undefined,boolean)和一種複雜數據類型(object)app
3.null數據類型爲object函數
4.var聲明變量但爲初始化,其值爲undefined;this
var a; alert(a == undefined);//true
5.Ecmascript中單引號和雙引號沒什麼區別編碼
6.將某個值轉換爲字符串htm
var a = 11; typeof a;//number var s=""+a; typeof s;//string
7.逗號操做符還能夠用於賦值,在用於賦值時,逗號操做符總會返回表達式的最後一項對象
var num=(1,2,3,4); num;//4
8.咱們不能給基本類型添加屬性(除object)blog
var name="sun"; name.age=21; alert(name.age)//undefined;
9.對象是按值傳遞的排序
function setname(obj){ obj.name = "sun"; obj = new Object(); obj.name = "che"; } var person = new Object(); setname(person); alert(person.name)//sun
10.if語句的變量聲明會將變量添加到當前的執行環境
if(true){ var color="blue"; } alert(color);//blue
11.簡單排序功能
var a = [0,1,5,2,10,15]; function b(v1,v2){ return v2-v1; } b.sort(a);//15,10,5,2,1,0
12.Ecmascript操做數組有迭代方法(every,filter,foreach,map,some..),轉換方法(toString,valueOf..),棧方法(pop,push(後進先出)),隊列方法(push,shift(先進先出)),重排序方法(reverse,sort..),操做方法(concat..slice,splice),位置方法(indexOf,lastIndexOf..),歸併方法(reduce..)(還真是多。。)
13.date類型方法太多太繁雜,用的時候再翻吧。。
14.function類型沒有重載,出現了同名函數,後面的覆蓋前面的函數,在函數內部有兩個特殊的對象:arguements和this(重點理解,過兩天專門寫一個詳解this,重點理解下)
15.call,apply,bind真正加強大的地方是能擴充函數賴以生存的做用域
16.charCodeAt()這個方法很好玩,返回函數的字符編碼。