在JavaScript中也玩變數型別強行轉換
我們在C/C++和C#這類強型別語言中,強行轉換變數型別簡直就是家常便飯。可是JavaScript這個動態型別指令碼語言的變數號稱是沒有型別的,那麼我們怎麼轉換它的變數的型別呢?而且還要強行轉。
JavaScript的變數確實是沒有型別的,就是說你var variable後,可以隨便的給variable賦值,不會有任何問題。可是賦給變數的值本身自己卻是有型別的,比如:String、Object、 Boolean和Number等等。所以JS的變數還是有型別轉換的,當然很多時候JS解析引擎會預設處理很多的type convert。不過有的時候也需要我們強行轉換資料型別,最常見的就是:''+數字+數字,這種情況來生成字串累加。
象:''+數字+數字,這樣的語法真的是比較的ugly,想我們在C中使用(int)xxx和C++中int(xxx)來做型別轉換多麼的清晰明瞭。其實JavaScript也支援這樣的型別轉換語法的,例如:
除了Number(obj)轉換失敗,其它強行轉換表示式都能取得有意義的轉換效果。
使用強行轉換表示式最大的好處就是可以使程式程式碼變得清晰,為本身就型別混亂的JavaScript程式設計減少混淆的可能。
至少我覺得類似:var str = String(3) + String(3); 比 var str = '' + 3 + 3; 表意更清晰。
還有預設轉換比較混亂的地方,比如:"88"-8和"88"+8,前者的預設轉換是把字串轉為數字(結果80),而後者又是把數字轉為字串(結果"888")@_@,真是亂。所以使用變數型別強制轉換,就可能避免這類預設轉換帶來的潛在理解出錯的問題。
JavaScript的變數確實是沒有型別的,就是說你var variable後,可以隨便的給variable賦值,不會有任何問題。可是賦給變數的值本身自己卻是有型別的,比如:String、Object、 Boolean和Number等等。所以JS的變數還是有型別轉換的,當然很多時候JS解析引擎會預設處理很多的type convert。不過有的時候也需要我們強行轉換資料型別,最常見的就是:''+數字+數字,這種情況來生成字串累加。
象:''+數字+數字,這樣的語法真的是比較的ugly,想我們在C中使用(int)xxx和C++中int(xxx)來做型別轉換多麼的清晰明瞭。其實JavaScript也支援這樣的型別轉換語法的,例如:
<script language="javascript">
var str = '100';
var num = Number(100);
alert(typeof(num) + ': ' + num);
var obj = Object(str);
alert(typeof(obj) + ': ' + obj);
var bool = Boolean(str);
alert(typeof(bool) + ': ' + bool);
var num = 100;
var str = String(num);
alert(typeof(str) + ': ' + str);
var bool = Boolean(num);
alert(typeof(bool) + ': ' + bool);
var obj = Object(num);
alert(typeof(obj) + ': ' + obj);
var bool = true;
var str = String(bool);
alert(typeof(str) + ': ' + str);
var num = Number(bool);
alert(typeof(num) + ': ' + num);
var obj = Object(bool);
alert(typeof(obj) + ': ' + obj);
var obj = {};
var str = String(obj);
alert(typeof(str) + ': ' + str);
var num = Number(obj);
alert(typeof(num) + ': ' + num);
var bool = Boolean(obj);
alert(typeof(bool) + ': ' + bool);
</script>
var str = '100';
var num = Number(100);
alert(typeof(num) + ': ' + num);
var obj = Object(str);
alert(typeof(obj) + ': ' + obj);
var bool = Boolean(str);
alert(typeof(bool) + ': ' + bool);
var num = 100;
var str = String(num);
alert(typeof(str) + ': ' + str);
var bool = Boolean(num);
alert(typeof(bool) + ': ' + bool);
var obj = Object(num);
alert(typeof(obj) + ': ' + obj);
var bool = true;
var str = String(bool);
alert(typeof(str) + ': ' + str);
var num = Number(bool);
alert(typeof(num) + ': ' + num);
var obj = Object(bool);
alert(typeof(obj) + ': ' + obj);
var obj = {};
var str = String(obj);
alert(typeof(str) + ': ' + str);
var num = Number(obj);
alert(typeof(num) + ': ' + num);
var bool = Boolean(obj);
alert(typeof(bool) + ': ' + bool);
</script>
使用強行轉換表示式最大的好處就是可以使程式程式碼變得清晰,為本身就型別混亂的JavaScript程式設計減少混淆的可能。
至少我覺得類似:var str = String(3) + String(3); 比 var str = '' + 3 + 3; 表意更清晰。
還有預設轉換比較混亂的地方,比如:"88"-8和"88"+8,前者的預設轉換是把字串轉為數字(結果80),而後者又是把數字轉為字串(結果"888")@_@,真是亂。所以使用變數型別強制轉換,就可能避免這類預設轉換帶來的潛在理解出錯的問題。
相關文章
- JavaScript中的強制型別轉換JavaScript型別
- Javascript基礎:變數型別轉換JavaScript變數型別
- 引用型別變數的強制轉換型別變數
- 變數型別轉換變數型別
- JS在if中的強制型別轉換JS型別
- JavaScript 字串轉換數值型別JavaScript字串型別
- Pytorch變數型別轉換PyTorch變數型別
- PHP 型別轉換&&型別強制轉換PHP型別
- javascript中隱私型別轉換JavaScript型別
- java型別轉換與強制型別轉換(轉)Java型別
- JavaScript 型別轉換JavaScript型別
- javascript強制型別轉換與操作符JavaScript型別
- Javascript基礎之-強制型別轉換(三)JavaScript型別
- JavaScript強制型別轉換的背後操作JavaScript型別
- Javascript基礎之-強制型別轉換(一)JavaScript型別
- 強制型別轉換型別
- 瞭解JavaScript中的型別轉換JavaScript型別
- JavaScript - 變數、值、型別JavaScript變數型別
- 腦圖學習 JavaScript 之犀牛書【三 · 二】型別轉換、變數JavaScript型別變數
- javascript中如何判斷變數的型別?JavaScript變數型別
- JavaScript 中對變數型別的判斷JavaScript變數型別
- 強制型別轉換之(==)型別
- 玩轉 JavaScript 之資料型別JavaScript資料型別
- 利用符號進行的型別轉換,轉換成數字型別 ~~符號型別
- JavaScript隱式型別轉換JavaScript型別
- JavaScript 資料型別轉換JavaScript資料型別
- javascript資料型別轉換JavaScript資料型別
- javascript中對變數型別的判斷方法JavaScript變數型別
- C++強制型別轉換C++型別
- 造型與強制型別轉換型別
- C++ 中四種強制型別轉換的區別C++型別
- JAVA基礎:Java變數型別間的相互轉換(轉)Java變數型別
- JavaScript 基本資料型別轉換JavaScript資料型別
- JavaScript核心概念(1):型別轉換JavaScript型別
- 說說JavaScript的型別轉換JavaScript型別
- 淺談JavaScript的型別轉換JavaScript型別
- JavaScript中的變數、資料型別以及運算子JavaScript變數資料型別
- JAVA型別轉換怎麼變Java型別