新的一天開始,讓我們伴隨者輕快的心情,開始今天的筆記
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){
case: Str < 'string':
alert('xiaoyu');
break;
case: Str > 'string'
alert('dayu');
break;
default :
alert('String');
}
(5)、function()的參數:
在ECMAScript中方法的參數雖然可以在方法聲明上寫入幾個參數,但是在調用的時候,我們可以不一定非得傳入相同的參數個數的
參數,這是因為在ECMAScript中,參數其實都是在方法內部以類似數組的格式儲存者,並且每個方法內部都會維護者一個arguments這麼一個對
象,因為他類似與數組,所以可以用arguments[0]來代指第一個參數。雖然arguments這個對象儲存在計算機中的空間和傳入的參數的儲存空間
不是同一個,但是他們卻是聯動的(但方向的聯動,也就是命名參數不會改變arguments中對應的值,另外值傳入一個參數,那麼arguments[1]設
置的值不會反應到命名參數中),就是arguments中的值永遠與對應參數的值保持同步。
function doAdd(num1,num2){
if(arguments.length === 1){
arguments[0]+=10;
alert(num1);
}else(arguments.length === 2){
arguments[1]+=10;
alert(arguments[0] + num2);
}
}
並且在ECMAScript中沒有重載,如果有了兩個相同名字的函數,則改名字只屬於後定義的函數。