首頁 > web前端 > js教程 > 主體

javascript弱型別什麼意思

青灯夜游
發布: 2023-01-06 11:17:55
原創
5540 人瀏覽過

在javascript中,弱型別是指資料型別可以被忽略,一個變數可以賦不同資料型別的值。 javascript是一種弱型別語言,它允許變數類型的隱式轉換,允許強制型別轉換等,如字串和數值可以自動轉換;而強型別語言一般不允許這麼做。

javascript弱型別什麼意思

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

強型別語言:

強制資料型別定義的語言。也就是說,一旦變數被指定了某個資料類型,如果不經過強制轉換,那麼它就永遠是這個資料類型了。舉個例子:如果你定義了一個整數變數a,那麼程式根本不可能將a當作字串類型處理。強型別定義語言是型別安全的語言。

弱型別語言:

資料型別可以被忽略的語言。它與強型別定義語言相反, 一個變數可以賦能不同資料型別的值。

弱型別語言允許變數類型的隱式轉換,允許強制型別轉換等,如字串和數值可以自動轉換;而強型別語言一般不允許這麼做。

js弱型別的體現

  一般法則是,約束越強越不容易出錯,但寫程式時也越麻煩。在JavaScript中,因為約束比較弱,所以容易出現這種錯誤:最簡單的例子:

 var a =200;
 var b ="1";
 var c= a + b;
登入後複製

你可能期望c是201,但實際上它是"2001",這個錯誤在強類型語言中決不會出現。然而正是因為JavaScript沒有這些約束,所以可以很方便地拼接數字和字串型別。

再例如下面這個例子:

var a = '11';
a = a - '';
alert(typeof a);// -->number
登入後複製

「-」可以是一元運算子(取負),也可以是二元(減法運算)

在循環語句中(if,while)中,一個Object物件可以隱式的轉換從BOOLEAN值。

var obj = {name:'jack'}
if(obj){
    //do more
}
登入後複製

比較難發現的是在alert()函數中。

String.prototype.fn = function(){return this};
var a = 'hello';
alert(typeof a.fn()); //-->object
alert(a.fn()); //-->hello
登入後複製

我們知道this可以理解成目前類別的實例對象,既然是物件那麼typeof a.fn()自然回傳是object了。

關鍵是最後的alert(a.fn()),a.fn()回傳的明明是對象,但卻隱式的轉換成了字串「hello」顯示。

【相關推薦:javascript學習教學

#

以上是javascript弱型別什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板