新的一天開始,讓我們伴隨者輕快的心情,開始今天的筆記
1、操作符:
(1): *、/、-在ecmascript中操作的時候,如果遇到有乙個操作值不是數值型(number),那麼就會在後台呼叫number()方法,將其轉化成number
(2): +和上面的三個操作符是不一樣的,只要其中乙個操作值不是number,那麼就會在後台呼叫tostring()或valueof(),得到string型別,總的來說:
就是只要乙個操作值不是number那麼,就會預設呼叫所有操作值的tostring()或valueof()方法來進行字串的拼接。除非由():
alert('string'+4+5);//stirng45
alert('string'+(4+5));//string9
(3):==和===的區別:
==在ecmascript是比較'不嚴謹'的:廢話不都說了直接上**,寫例子
表示式值
null==undefined
true
nan==nan
false
'5'==5
true
false==0
true
true==1
true
true==2
false
undefined==0
false
null==0
false
nan!=nan
true
所以在專案中我們一律使用全等(===)和不全等(!==),在這種情況下比較的兩個運算元就會進行額外的轉化。
例如::'5' === 5;//false
(4):switch()語句:
在ecmascript中switch是自我鑑定語句,和其他語言有所不同,1:可以在switch中使用任何資料型別,2:每乙個case不一定是常量
var str = 'string';
switch(true)
(5)、function()的引數:
在ecmascript中方法的引數雖然可以在方法宣告上寫入幾個引數,但是在呼叫的時候,我們可以不一定非得傳入相同的引數個數的
引數,這是因為在ecmascript中,引數其實都是在方法內部以類似陣列的格式儲存者,並且每個方法內部都會維護者乙個arguments這麼乙個對
象,因為他類似與陣列,所以可以用arguments[0]來代指第乙個引數。雖然arguments這個物件儲存在計算機中的空間和傳入的引數的儲存空間
不是同乙個,但是他們卻是聯動的(但方向的聯動,也就是命名引數不會改變arguments中對應的值,另外值傳入乙個引數,那麼arguments[1]設
置的值不會反應到命名引數中),就是arguments中的值永遠與對應引數的值保持同步。
function doadd(num1,num2)else(arguments.length === 2)
} 並且在ecmascript中沒有過載,如果有了兩個相同名字的函式,則改名字只屬於後定義的函式。
《JavaScript高階程式設計》總結四
一 function型別 每個函式都是function型別的例項。而且函式是物件,因此函式名實際上是指向函式物件的指標,不會與某個函式繫結 function add a,b var sum function a,b 解析器會率先讀取函式宣告並加到執行環境中,函式宣告提公升。函式表示式則必須等到解析器...
JavaScript高階程式設計
ecmascript有5種基本型別資料 另外還有一種複雜的資料型別 typeof就是用來檢測變數的資料型別的,typeof可能會返回以下值 typeof操作符在檢測引用型別的值時,總是會返回object,所以用處不大。instanceof用來檢測物件型別的,返回值是 true false。例如 pe...
JavaScript高階程式設計 this
在函式中this到底取何值,是在函式真正被呼叫執行的時候確定的,函式定義的時候確定不了 因為this的取值是執行上下文環境的一部分,每次呼叫函式,都會產生乙個新的執行上下文環境。所謂建構函式就是用來new物件的函式。其實嚴格來說,所有的函式都可以new乙個物件,但是有些函式的定義是為了new乙個物件...