溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是javascript弱類型

發(fā)布時(shí)間:2021-06-22 16:48:12 來源:億速云 閱讀:234 作者:chen 欄目:web開發(fā)

這篇文章主要講解了“什么是javascript弱類型”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“什么是javascript弱類型”吧!

在javascript中,弱類型是指數(shù)據(jù)類型可以被忽略,一個(gè)變量可以賦不同數(shù)據(jù)類型的值。javascript是一種弱類型語言,它允許變量類型的隱式轉(zhuǎn)換,允許強(qiáng)制類型轉(zhuǎn)換等,如字符串和數(shù)值可以自動(dòng)轉(zhuǎn)化;而強(qiáng)類型語言一般不允許這么做。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

強(qiáng)類型語言:

強(qiáng)制數(shù)據(jù)類型定義的語言。也就是說,一旦一個(gè)變量被指定了某個(gè)數(shù)據(jù)類型,如果不經(jīng)過強(qiáng)制轉(zhuǎn)換,那么它就永遠(yuǎn)是這個(gè)數(shù)據(jù)類型了。舉個(gè)例子:如果你定義了一個(gè)整型變量a,那么程序根本不可能將a當(dāng)作字符串類型處理。強(qiáng)類型定義語言是類型安全的語言。

弱類型語言:

數(shù)據(jù)類型可以被忽略的語言。它與強(qiáng)類型定義語言相反, 一個(gè)變量可以賦不同數(shù)據(jù)類型的值。

弱類型語言允許變量類型的隱式轉(zhuǎn)換,允許強(qiáng)制類型轉(zhuǎn)換等,如字符串和數(shù)值可以自動(dòng)轉(zhuǎn)化;而強(qiáng)類型語言一般不允許這么做。

js弱類型的體現(xiàn)

 一般規(guī)律是,約束越強(qiáng)越不容易出錯(cuò),但編寫程序時(shí)也越麻煩。在JavaScript中,因?yàn)榧s束比較弱,所以容易出現(xiàn)這種錯(cuò)誤:最簡單的例子:

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

你可能期望c是201,但實(shí)際上它是"2001",這個(gè)錯(cuò)誤在強(qiáng)類型語言中決不會(huì)出現(xiàn)。然而正是因?yàn)镴avaScript沒有這些約束,所以可以很方便地拼接數(shù)字和字符串類型。

再比如下面這個(gè)例子:

var a = '11';
a = a - '';
alert(typeof a);// -->number

“-”可以是一元運(yùn)算符(取負(fù)),也可以是二元(減法運(yùn)算)

在循環(huán)語句中(if,while)中,一個(gè)Object對(duì)象可以隱式的轉(zhuǎn)換從BOOLEAN值。

var obj = {name:'jack'}
if(obj){
    //do more
}

比較難以發(fā)現(xiàn)的是在alert()函數(shù)中。

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

我們知道this可以理解成當(dāng)前類的實(shí)例對(duì)象,既然是對(duì)象那么typeof a.fn()自然返回是object了。

關(guān)鍵是最后的alert(a.fn()),a.fn()返回的明明是對(duì)象,但卻隱式的轉(zhuǎn)換成了字符串“hello”顯示。

感謝各位的閱讀,以上就是“什么是javascript弱類型”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)什么是javascript弱類型這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI