javascript 高階程式設計 四

2021-08-02 14:21:15 字數 1485 閱讀 8373

新的一天開始,讓我們伴隨者輕快的心情,開始今天的筆記

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乙個物件...