1. var array = new array(10);
直接在控制台看一目了然,上圖:
可以看到array裡面是 (10)[empty*10],也就是說new array(10);只是生成乙個長度是10的空陣列。
再看這個控制台結果,繼續上圖:
接下來說一下型別轉換的兩個操作,+和-運算對於 「+」 如果左運算元或右運算元不是基本資料型別(
primitive
)時,會對其進行toprimitive
轉換,這樣,左運算元和右運算元都是基本資料型別了,但是如果左右兩邊的資料型別不一致該怎麼辦呢?這就涉及到乙個優先順序的問題,低優先順序的資料型別會主動轉換為和高優先順序一樣的資料型別,然後再進行相加操作。它們的優先順序關係為:string > num > boolean
,所以就會存在兩種相加操作:字串拼接和數字相加。例如:
"1" + 1;//"11"對於「-」操作就簡單的多了,只是進行數值相減。 對於非數值型別的左右運算元都進行1 + true;// 2
"1" + true// 相當於 「1」+「true」="1true"
tonumber
,然後再進行數值相減運算。
"1" - 1;//0"1" - true //0
1 - "true" // 0
//再看下面例子:const o =
//};
//alert(o.say());
//我叫大海
//說明:繫結this是有由方法如何被呼叫所決定的而並不是函式定義所決定的,理解這點非常重要。也就是說這裡的this繫結到o上
//並不是因為say是o的屬性,而是因為say直接由o呼叫,所以this才綁在了o上。那如果把同乙個函式賦值給乙個物件又會怎麼?例如
//const sp = o.say;
//alert(sp());
//我叫
//由於呼叫函式的方式所以js並不知道原始函式是在o中定義的,所以this將會綁上undefined
//const o =
//return '我叫:'+getreversename();
//},
//};
//alert(o.greetbackwards());
//我叫: 這裡為什麼不是「我叫:大海」?? 因為調o.greetbackwards()時裡面又調了乙個
//getreversename() 所以this綁在greetbackwards上了而不是o,為了解決這種問題常見的方式是把this賦值給乙個變數暫存 例如
const o =
return
'我叫:
'+getreversename();
},};
alert(o.greetbackwards());
//我叫:大海
const bruce =;function greet()
alert(greet()) //我叫
alert(greet.call(bruce));
//我叫大海 這裡對call不做過多解釋,上篇文章已說過。可以看到call方法在呼叫函式時允許給this繫結乙個物件
關於js陣列的那些事
參考文章 1.基本操作方法 2.js陣列的三大屬性 a.length 屬性 length表示陣列的長度,從0開始。與其他的語言不一樣的地方是,陣列的長度是可以變化的。不存在陣列越界的情況,但是會出現陣列元素丟失,而且就算後面恢復陣列的長度,也無法收回。舉個列子就很明白了。而且length不但可以顯示...
JS 中 call apply bind 那些事
回 雖然網上有很多關於這方面的部落格和文章,但還是決定寫一篇自己對這方面知識的理解。01 作用 首先問個問題,這三個函式的存在意義是什麼?答案是改變函式執行時的上下文,再具體一點就是改變函式執行時的this指向。有了這個認識,接下來我們來看一下,怎麼使用這三個函式。舉個栗子 function per...
Js內建物件那些可怕的事
內建物件number parseint 整數 parsefloat 浮點數 isnan 判斷是不是nan 返回布林值 tofixed value 設定保留幾位小數,且會四捨五入返回字串 number.max safe integer 最大數 number.positive infinity 無限正數...