日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换

發布時間:2025/3/20 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符串類型與數字類型的混亂,應該是JS最著名的奇葩問題了。
恰好最近遇到這個問題,在這里對這個問題的解決方法及產生原因進行總結與分析。

Java 語言與 JavaScript 語言是什么關系。這是初學者常常疑惑的問題。通常情況下大家會回答“有個屁的關系”。但Java 與JavaScript真的一點關系都沒有嗎?答案當然是否定的。這兩種語言雖然有著各種各樣的不同,但他們的語法卻非常的相似,或者說JavaScript刻意的模仿了Java語言的語法。
我們知道Java是一種強類型語言,變量在聲明時必須變量的數據類型。而JavaScript卻是一種弱類型語言。
在Java中數字類型相加的時候用的是字符 “+” ,字符串拼接使用的也是字符 “+”。因為JavaScript是強類型的,這個時候雖然都是 “+”,但他的語義卻是十分清楚的,不會出現什么問題。
但是在JavaScript中,情況卻發生了變化。在聲明變量的時候,參數的類型是明確的。例如

var parameter1 = "231";//這是一個字符串變量var parameter2 = 231; //這是一個數值(int)型變量

然而問題就出在傳遞參數的時候,例如如下情況

var parameter = 231;fun(parameter);function fun(parameter){//在這里,傳遞進來的參數是字符串}

更奇葩的是,同一個變量。使用 “-” 運算符的時候,做的是數值相減的運算,而使用“+”運算符的時候,卻是字符串的拼接。例如:

var parameter = 7;fun(parameter);function fun(parameter){for(var i= parameter-2;i<=parameter+2;i++){console.log(i);//這里parameter-2 算出的值是5(數值運算)//而parameter+2算出的值卻是72(字符串拼接)//這個循環會將從5到72的數字都打印一遍。是的,媽蛋,循環的時候他又變回數字了 ( ╯-_-)╯┴—┴}}

那么其他弱類型語言為啥不會出現這個奇葩的問題呢?
拿PHP舉例,PHP的字符拼接運算符是“.”。數值運算加 的運算符為"+"。故不可能出現這個問題。

以下是問題的解決辦法

parameter = parseInt(parameter);

:JS類型轉換總結

parseInt("1234blue"); //returns 1234 parseInt("0xA"); //returns 10 parseInt("22.5"); //returns 22 parseInt("blue"); //returns NaNparseFloat("1234blue"); //returns 1234.0 parseFloat("0xA"); //returns NaN parseFloat("22.5"); //returns 22.5 parseFloat("22.34.5"); //returns 22.34 parseFloat("0908"); //returns 908 parseFloat("blue"); //returns NaNBoolean(""); //false – empty string Boolean("hi"); //true – non-empty string Boolean(100); //true – non-zero number Boolean(null); //false - null Boolean(0); //false - zero Boolean(new Object()); //true – objectNumber(false) // 0 Number(true) //1 Number(undefined) // NaN Number(null) //0 Number( "5.5 ") //5.5 Number( "56 ") //56 Number( "5.6.7 ") //NaN Number(new Object()) //NaN Number(100) //100 var s1 = String(null); //"null" var oNull= null; var s2 = oNull.toString(); //won’t work, causes an errorvar s1 = 123;var s2 = 123+""; //轉換為字符串

如果有幫到您,打個賞唄

總結

以上是生活随笔為你收集整理的JavaScript 特有奇葩问题“字符串类型与数字类型混乱”的分析与解决,与类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。