首頁  >  文章  >  web前端  >  為什麼說javascript是弱型別語言

為什麼說javascript是弱型別語言

青灯夜游
青灯夜游原創
2022-10-12 16:44:251903瀏覽

在弱型別語言中,資料型別可以被忽略,一個變數可以賦不同資料型別的值;而javascript變數在不同的場合可以解釋為不同的類型,它允許變數類型的隱式轉換和強制轉換。在JavaScript中,不必事先聲明變數的資料型別就可以使用變量,這時JavaScript解釋器會根據情況做出他認為正確的判斷。

為什麼說javascript是弱型別語言

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

靜態語言:我們把在使用之前就需要確認其變數資料型別的稱為靜態語言。

動態語言:我們把在運行過程中需要檢查資料類型的語言稱為動態語言。

通常把偷偷進行型別轉換的運算變成隱含型別轉換

#而支援隱含型別轉換的語言稱為弱型別語言,不支援隱式型別轉換的語言稱為強型別語言

強型別語言:

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

弱型別語言:

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

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

JavaScript是弱型別語言

JavaScript屬於「寬鬆型別」的程式語言,這表示JavaScript變數在不同的場合可以解釋為不同的類型。

在JavaScript中,不必事先宣告變數的資料型別就可以使用變量,這時JavaScript解釋器會根據情況做出他認為正確的判斷。如果我們現在變數裡保存了一個字串,稍後又想把它當作數值使用,這在JavaScript裡是完全可行的,前提是這個字串必須包含像數字的內容。

js弱型別的體現

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

再例如下面這個例子:

var a =200;
var b ="1";
var c= a + b;

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

為什麼說javascript是弱型別語言

再例如下面這個範例:

var a = '11';
a = a - '';
console.log(typeof a);// -->number

為什麼說javascript是弱型別語言

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

在循環語句中(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

為什麼說javascript是弱型別語言

為什麼說javascript是弱型別語言

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

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

【相關推薦:javascript影片教學程式設計影片

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn