語法
區分大小寫借鑑了C以及類C語言
標識符一切變量函數名和操作符都是區分大小寫的(例:typeof是關鍵字但是typeOf不用)
嚴格模式“use strict”標識符是變量,函數,屬性,或者函數的參數。
第一個字符必須一個字母,下劃線以及$
其他可以是字母,下劃線,數字或者$
標識符中的字母也可以包含擴充的ASCII或者Unicode字符,採用駝峯大小寫格式
數據類型
typeof是一個操作符而不是函數5種基本數據類型:Undefined,Null,Boolean,Number和String
1種複雜數據類型:Object
null被認爲是一個空的對象引用
undefined類型
object類型
Constructor:保存着用於創建當前對象的函數,對於前面的例子而言,構造函數Object()
hasOwnProperty(propertyName):用於檢測給定屬性在當前對象實例中(而不是在實例的原型中是否存在)
isPropertyOf(object):用於檢測傳入對象是否是另一個對象的原型propertyName是字符串
propertyIsEnumerable(propertyName):用於檢測給定的屬性是否能夠使用for-in語句來枚舉
toLocalString():返回對象的字符串表示,該字符串與執行環境的地區對應
toString():返回對象的字符串表示
valueOf():返回對象的字符串數值或者布爾值表示
相等操作符
相等和不相等——先轉換再比較
== &!=兩個操作符都會先轉換操作數(強制轉型),然後再比較相等性。
轉換包括:布爾值轉數值(false-0,true-1),字符串轉數值,對象的valueOf()
進行比較之前其中
null和undefined是相等的null==undefined
比較相等性之前,不能將null和undefined轉換成其他值
NaN不和任何操作數相等
兩個都是對象那麼看是不是同一個對象。
全等和不全等——僅比較而不轉換
數據類型也要比
語句
if,do-while,while,for,switch
for-in
for(property in expression) statement
舉例:
for(var propName in window){
document.write(propName);
label語句}
使用for-in循環顯示BOM中window對象的所有屬性,其中var爲了保證局部變量。
!如果是null或者undefined會拋出錯誤或者ES5之後只是不執行循環體
label:語句
一般都和for等循環語句配合使用
break和continue語句
break語句會立即退出循環,強制繼續執行循環後面的語句
continue語句也是立即退出,但是退出後會從循環的頂部繼續執行。
with語句
with(expression) statement;
with語句作用是將代碼的作用域設置到一個特定的對象中
目的:簡化多次編寫同一個對象的工作
函數
調用函數:函數名(參數);
位於return語句之後的任何代碼不會執行,遇到return就會執行後停止並退出。
一個函數可以有多個return,return語句可以不帶任何返回值(停止後會返回undefined)
嚴格模式對函數有一些限制:不能把函數和參數命名爲eval或者arguments,不能出現兩個命名參數同名情況。
理解參數
ECMAScript中的參數在內部是用一個數組來表示的,函數接受到的是這個數組。所以定義的函數接受兩個參數也可以傳遞一個或者三個等等。
函數體內可以通過arguments對象來訪問這個參數數組,從而獲取傳遞給參數的每一個參數。
ECMAScript中的所有參數傳遞的都是值,不可能通過引用傳遞參數。
沒有重載
ECMAScript沒有函數簽名(接受的參數的類型和數量),因爲其參數包含另個或者多個值的數組來表示的,就做不到重載。