//例1:值類型作為參數function foo(num){//這里的num在進來的時候就是123 num *= 2;//246}var n1 = 123;foo(n1); //傳參數時會將n1拷貝一份,即內存中有兩個123,將拷貝的123傳入到函數中賦值console.log(n1);//123結論1: 值類型在參數傳遞中,函數內與函數外是兩個不同的變量,只是數據值相同而已,修改其中一個,另一個不影響//例2:引用類型作為參數function seeDoctor(per){//進入函數體前,拿到傳入的數據,即地址 per.health = '健康';}var p = { name:'jim', health:'感冒'};//有兩個內存區域,一個存儲數據,一個存儲p(即地址)seeDoctor(p);//傳遞參數時p會被拷貝一份,拷貝的是地址,數據沒有被拷貝console.log(p.health);//健康//使用p找內存中的數據//得到的就是'健康'結論2: 引用類型在參數傳遞中,函數內與函數外是兩個不同的變量,但是指向同一個對象,因此使用函數內的變量,去修改對象的數據,函數結束后,修改的結果會保留下來//例3:特例function seeDoctor(per){ per = { name:'tom', health:'健康' };}var p = { name:'tom', health:'感冒'};seeDoctor(p);console.log(p.health);//感冒結論3:引用類型如果直接賦值,就和值類型一樣4. 字面量固定的值,讓你從“字面上”理解其含義。var age=18; // 數值字面量,18為字面值5. 因為精度丟失問題,所以不判斷計算后的兩個浮點數是否相等 6. 數值范圍由于內存的限制,ECMAScript 并不能保存世界上所有的數值
最小值:Number.MIN_VALUE,這個值為: 5e-324
最大值:Number.MAX_VALUE,這個值為: 1.7976931348623157e+308
無窮大:Infinity
無窮小:-Infinity
7. NaNa) NaN 非數值(Not a Number的簡寫)
console.log(“abc”/18); //結果是NaN
Undefined和任何數值計算為NaN;
NaN 與任何值都不相等,包括 NaN 本身
b) isNaN() :任何不能被轉換為數值的值都會導致這個函數返回 true
(isNaN譯為是否符合一個標準,什么標準呢?不是一個數字的標準,如果符合了那么就不是一個數字,不符合就是一個數字)
isNaN(NaN);// true
isNaN(“blue”); // true
isNaN(123); // false
8. 轉義符://t:制表符,四個空格/n:換行9. 字符串的不可變性在內存中不會立刻消失,只能二次賦值,原有的字符在一定時間內被垃圾回收器回收。 10. undefined 和 nullnull和undefined有最大的相似性。看看null == undefined的結果(true)也就更加能說明這點。但是null ===undefined的結果(false)。不過相似歸相似,還是有區別的,就是和數字運算時,10 + null結果為:10;10 + undefined結果為:NaN。任何數據類型和undefined運算都是NaN;任何值和null運算,null可看做0運算。 11. BoobleanBoolean類型有兩個字面量:true和false,區分大小寫。(大寫不對)雖然Boolean 類型的字面值只有兩個,但 ECMAScript 中所有類型的值都有與這兩個Boolean 值等價的值true、除0數字、“something”、Object(任何對象)為truefalse、0 、“”、undefined 、null為falseif判斷時會把括號內的值強行轉換成boolean類型。
新聞熱點
疑難解答