弱類型語言 是相對(duì)強(qiáng)類型語言來說的
站在用戶的角度思考問題,與客戶深入溝通,找到巴州網(wǎng)站設(shè)計(jì)與巴州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋巴州地區(qū)。
在強(qiáng)類型語言中,變量類型有多種,例如int char float boolean 等
不同的類型相互轉(zhuǎn)換有時(shí)需要強(qiáng)制轉(zhuǎn)換
而javascript只有一種類型var ,為變量賦值時(shí)會(huì)自動(dòng)判斷類型并進(jìn)行轉(zhuǎn)換
所以javascript是弱語言
就體現(xiàn)在變量定義類型VAR上了
弱類型語言內(nèi)存布局上一般是個(gè)Union結(jié)構(gòu),并且要包含一個(gè)類型字段,因?yàn)橛?jì)算機(jī)底層還是要知道明確的類型信息。
因?yàn)榘愋托畔?,所以在代碼的上下文中,可能會(huì)進(jìn)行隱含的類型轉(zhuǎn)換,比如把字符串轉(zhuǎn)整型,整型轉(zhuǎn)字符串,這樣會(huì)稍損性能,并且可能會(huì)不符合程序本意。
弱類型語言都是腳本語言,在運(yùn)行時(shí)確定值,所以跟編譯不相關(guān)。
我的經(jīng)驗(yàn)是弱類型在大項(xiàng)目開發(fā)上,還是不方便,需要在整個(gè)框架結(jié)構(gòu)上做規(guī)范,否則多人合作開發(fā)比較麻煩。
弱類型使用簡單,更靈活多變。對(duì)于程序員來講這是個(gè)優(yōu)點(diǎn)。
強(qiáng)類型語言,類型轉(zhuǎn)換的時(shí)候非常嚴(yán)格,這跟語言特點(diǎn)有關(guān)系,
強(qiáng)類型語言是直接操縱內(nèi)存,容易出內(nèi)存越界和泄漏的問題。在類型的轉(zhuǎn)換方面是很多約束,甚至強(qiáng)制轉(zhuǎn)換也要很謹(jǐn)慎,一不小心就出大問題。
弱類型語言一般都會(huì)犧牲一些運(yùn)行性能,不過簡單好用,而且相對(duì)安全。
其實(shí)兩種類型對(duì)應(yīng)的語言本身其他的差異已經(jīng)很大了,整個(gè)區(qū)別還是比較明顯的。
弱類型語言也是有類型的。或者說,任何計(jì)算機(jī)語言都是要有類型的。
基本數(shù)據(jù)類型有:number、string、boolean、undefined、null
引用類型有:object、function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num = 123;
console.log(typeof num);//number
var str = 'string';
console.log(typeof str);//string
var bool = true;
console.log(typeof bool);//boolean
var undef = undefined;
console.log(typeof undef);//undefined
var nul = null;
console.log(typeof nul);//object。因?yàn)閚ull代表對(duì)象是空的情況。
自動(dòng)類型轉(zhuǎn)換
1
2
3
4
"10.0"%"5"http://結(jié)果是0,string類型自動(dòng)類型轉(zhuǎn)換為number類型
!0//結(jié)果是true,number類型自動(dòng)轉(zhuǎn)換為boolean類型
"10.0" + 5//結(jié)果是"10.05",number類型自動(dòng)轉(zhuǎn)換為string類型