javascript 型別轉換

2021-09-11 18:43:41 字數 4534 閱讀 9142

var num = number(true); console.log(typeof(num) + num)—結果:number: 1

var num = number(false); console.log(typeof(num) + num)—結果:number: 0

var num = number(null); console.log(typeof(num) + num)—結果:number: 0

var num = number(undefined); console.log(typeof(num) + num)—結果:number: nan

var num = number(「-123」); console.log(typeof(num) + num)—結果:number: -123

var num = number(「123abc」); console.log(typeof(num) + num)—結果:number: nan

將數字轉化為整形,也可以將字串轉化為數字。

var demo = 10; console.log( parseint(demo,16));—將10當16進製制轉化為10進製 number:17

var demo = "123.12abc"; console.log( parseint(demo,16));— number:123 以非數字位為斷點轉化

var demo = "123.12abc"; console.log( parseint(demo,16));— number:123.12 以非數字位為斷點轉化**(除了小數點)**

這裡寫什麼東西都會變成相對應的字串

「12".tostring();

"123".tostring(8);以8進製將123轉化成字串

undefined null不能使用此函式

var num = 1+'1' ; console.log( typeof num)—結果:string

var num = 1*'1' ; console.log( typeof num)—結果:number

var num = 1-'1' ; console.log( typeof num)—結果:number

var num = '2'+'1' ; console.log( typeof num)—結果:string

var num = '2'-'1' ; console.log( typeof num)—結果:number

var num = '2'*'1' ; console.log( typeof num)—結果:number

隱式轉化number(demo)—>再與nan比較是nan輸出true,否則輸出false

隱式轉化number(demo)—>再++ –

隱式轉化number(demo)—>再進行- * / =

+號兩側有乙個string型別就都轉化為string

100>10>0 false 100>10>0 true 挨個計算(100>10)為true就轉化為1了,再和後面的數值比較。

undefined>0   false; undefined<0   false; undefined ==0 false;

null>0 false; null<0 false; null ==0 false;

null ==undefined; true

nan == nan ; false

typeof(typeof(undefined)) string

typeof nan `===` 'number' ; true

0==null; false

0==undefined; false

symbol

這個型別轉換為字串必須是顯示的,隱式轉換會出錯

var s = symbol('aabb');

string(s); //"symbol(aabb)"

s + ""; //typeerror: cannot convert a symbol value to a string

25.try catch 語句

try 中的 return 和 throw 會在有 finally 語句是中的 return 或 throw 覆蓋(這裡的確是覆蓋,而不是前乙個 return 未執行,

(() =>  finally })(); // 2
var a = ;

var b = ;

a < b; //false

a == b; //false

a > b; //false

a <= b; //true

a >= b; //true

對於大於(等於)和小於(等於)號,兩個物件 a 和 b 都被轉換成了字串 「[object object]」,所以他們應該是相等的,所以 a < b 和 a > b 都是 false,而 a <= b 和 a > = b 都是 true。但是 a == b 為 false。有了上面的知識,就很好理解這個問題,a, b都是物件,所以不發生型別轉換,而兩個物件引用不同,結果為 false。

27.陣列中的 null 和 undefined

陣列中的 null 和 undefined 會在轉換為字串時被看做空,也就是可以直接忽略。== 會按前面的型別進行轉換

"" == [null];                //true

"1,,3" == [1,undefined,3] //true

27.tolocalestring 和 tostring

tolocalestring 和 tostring 方法同時存在,它定義了個性化的字串轉換功能,對於物件而言 tolocalestring 和 tostring 是一樣的。不過array, number, date 和typedarray(es6中的型別,這裡不討論)都重寫了 tolocalestring。比如說數值型別:

console.log((1234).tolocalestring());   //1,234

console.log((1234567).tolocalestring('zh-hans-cn-u-nu-hanidec', )); //一二三四五六七

console.log((1234567).tolocalestring('zh-hans-cn-u-nu-hanidec', )); //一,二三四,五六七

日期型別:

得到一些地域性的時間表示

var date = new date();

console.log(date.tostring()); //tue apr 15 2014 11:50:51 gmt+0800 (中國標準時間)

console.log(date.tolocalestring()); //2014-4-15 11:50:51

console.log(date.tolocaledatestring()); //2014-4-15

console.log(date.tolocaletimestring()); //上午11:50:51

陣列型別的 tolocalestring 就是將陣列中的數值型別和日期型別分別按 tolocalestring 轉換為字串,再形成整體字串。

關於 tolocalestring 的定義官方也是故意沒給出具體的實現細節【坑19】,這一點完全不能理解,所以這個方法用的場合也比較有限,這裡不再贅述了

28.-0和+0是一致的

console.log(+0 === -0);            //true

console.log(+0 == -0); //true

parseint() 和 number() 都會忽略字串首尾的空格,但parseint() 不會忽略格式化字元,而number() 會將格式化字元與空格一起忽略

number(" 34\n\t "); //34

number(" \t34 "); //34

number(" 3\t\n4 "); //nan, 不和開頭結尾的空格一起的格式化字元不會被忽略

parseint(" \t34 "); //nan

他們對空字串的處理也不一樣

number(" "); //0, 空格被忽略了,所以 " " 等價於 ""

parseint(" "); //nan, 空格被忽略了,所以 " " 等價於 ""

JavaScript型別轉換

方法主要有三種 轉換函式 強制型別轉換 利用js變數弱型別轉換。1.轉換函式 js提供了parseint 和parsefloat 兩個轉換函式。前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,這兩個函式才能正確執行 對其他型別返回的都是nan not a number ...

JavaScript 型別轉換

僅針對字串 轉換規則 1.忽略字串前面的空格,直到找到第乙個非空格符 2.如果第乙個字元不是數字或負號,返回 nan parseint nan 3.如果第乙個字元是數字字元,繼續解析第二個字元,直到解析完所有後續字元或遇到乙個非數字字元 parseint 9527great 9527 parsein...

javascript資料型別轉換

isnan 判斷是否不是乙個有效數字,是有效數字返回false,否則返回true isnan 會隱式呼叫number 方法,把值轉強制換成數字資料型別 非強制轉換成數字 parseint 從左到右查詢數字,遇到非數字就停止 parsefloat 比parseint多識別乙個小數點 string 轉換...