netJavaScript的變量確實是沒有類型的,就是說你varvariable后,可以隨便的給variable賦值,不會有任何問題??墒琴x給變量的值本身自己卻是有類型的,比如:String、Object、Boolean和Number等等。所以JS的變量還是有類型轉(zhuǎn)換的,當(dāng)然很多時候JS解析引擎會默認處理很多的type convert。不過有的時候也需要我們強行轉(zhuǎn)換數(shù)據(jù)類型,最常見的就是:''+數(shù)字+數(shù)字,這種情況來生成字符串累加。 象:''+數(shù)字+數(shù)字,這樣的語法真的是比較的ugly,想我們在C中使用(int)xxx和C++中int(xxx)來做類型轉(zhuǎn)換多么的清晰明了。其實JavaScript也支持這樣的類型轉(zhuǎn)換語法的,例如:scriptlanguage="javascript"varstr='100';varnum=Number(100);alert(typeof(num)+':'+num);varobj=Object(str);alert(typeof(obj)+':'+obj);varbool=Boolean(str);alert(typeof(bool)+':'+bool);varnum=100;varstr=String(num);alert(typeof(str)+':'+str);varbool=Boolean(num);alert(typeof(bool)+':'+bool);varobj=Object(num);alert(typeof(obj)+':'+obj);varbool=true;varstr=String(bool);alert(typeof(str)+':'+str);varnum=Number(bool);alert(typeof(num)+':'+num);varobj=Object(bool);alert(typeof(obj)+':'+obj);varobj={};varstr=String(obj);alert(typeof(str)+':'+str);varnum=Number(obj);alert(typeof(num)+':'+num);varbool=Boolean(obj);alert(typeof(bool)+':'+bool);/script 除了Number(obj)轉(zhuǎn)換失敗,其它強行轉(zhuǎn)換表達式都能取得有意義的轉(zhuǎn)換效果。 使用強行轉(zhuǎn)換表達式最大的好處就是可以使程序代碼變得清晰,為本身就類型混亂的JavaScript編程減少混淆的可能。 至少我覺得類似:varstr = String(3) + String(3); 比varstr= '' + 3 + 3; 表意更清晰。 還有默認轉(zhuǎn)換比較混亂的地方,比如:"88"-8和"88"+8,前者的默認轉(zhuǎn)換是把字符串轉(zhuǎn)為數(shù)字(結(jié)果80),而后者又是把數(shù)字轉(zhuǎn)為字符串(結(jié)果"888")@_@,真是亂。所以使用變量類型強制轉(zhuǎn)換,就可能避免這類默認轉(zhuǎn)換帶來的潛在理解出錯的問題。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了茂名免費建站歡迎大家使用!
1、javascript是弱類型語言,定義變量時用var關(guān)鍵字(可選)且不需要也不能指定變量的類型,而java是強類型語言,定義任何變量時必須指定其類型,否則無法通過編譯;
2、javascript定義函數(shù)(或函數(shù)直接量)時要使用function關(guān)鍵字,java不需要;
下面舉例說明:
1、定義變量的方法
javascript
var 變量名=初始值(可選);或
變量名=初始值(可選);如
var str="你好";
d=new Date();
java
變量修飾符(public、protected、private、static、final的有效組合) 變量類型 變量名=初始值(可選);如
public static final int Count=100;
2、定義函數(shù)的方法
javascript
function 函數(shù)名(參數(shù)列表(可選))
{
}
或
var(可選) 變量名=function(參數(shù)列表(可選))
{
}如
function f(a,b,c)
{
}
或
f2=function()
{
}
java
函數(shù)修飾符(public、protected、private、static、final、abstract的有效組合) 返回類型 函數(shù)名(參數(shù)列表(可選))
{
}(非abstract函數(shù))
或
函數(shù)修飾符(public、protected、abstract的有效組合) 返回類型 函數(shù)名(參數(shù)列表(可選));如
public static void f(int a,String msg)
{
}或
public abstract int f2(float f,char c);
簡單一點, Java是強類型語言,強類型語言規(guī)范多,書寫要求嚴(yán)格,而Javascript和PHP是弱類型語言,規(guī)則少。
JavaScript與Java的區(qū)別:1.兩者語言間的異同:B.JavaScript是基于對象和事件驅(qū)動的編程語言,Java是一種真正面向?qū)ο蟮恼Z言;C.前者是一種解釋性編程語言,后者的源代碼在傳遞到客戶端執(zhí)行之前,須經(jīng)過編譯;D.強變量和弱變量。前者采用弱定義類型變量檢查,后者相反。E.前者的代碼是一種文本字符格式,可以直接嵌入HTML文件中,并可用動態(tài)裝載,后者是一種與HTML無關(guān)格式,必須通過像HTML中引用外媒體那樣進行裝載,其代碼以字節(jié)代碼的形式保存在獨立的文檔中;F.嵌入方式不一樣,前者使用來標(biāo)識,后者用來標(biāo)識;G.前者采用動態(tài)聯(lián)編,后者使用靜態(tài)聯(lián)編。2.語言性能的差異:a.JavaScript的本質(zhì)是解釋的;b.JavaScript實現(xiàn)了SRC屬性;c.JavaScript代碼能方便地修改,并立即在瀏覽器中看到修改的結(jié)果;d.JavaScript能有效地與DOM結(jié)合控制瀏覽器的行為,能方便地使用插件、瀏覽器事件、窗體等技術(shù),以實現(xiàn)用戶與網(wǎng)頁的交互;e.由于JavaScript代碼置于HTML文件中,這樣,JavaScript代碼便暴露在眾人面前,源碼存在安全問題;f.雖然JavaScript的功能非常強大,但是它在處理非常復(fù)雜的應(yīng)用時就被其自身機制的局限性所限制。雖然JavaScript與Java有緊密的聯(lián)系,但卻是兩個公司開發(fā)的不同的產(chǎn)品。Java是SUN公司推出的新一代面向?qū)ο蟮某绦蛟O(shè)計語言,特別適合于Internet應(yīng)用程序開發(fā);而JavaScript是Netscape公司的產(chǎn)品,其目的是為了擴展NetscapeNavigator功能,而開發(fā)的一種可以嵌入Web頁面中的基于對象和事件驅(qū)動的解釋性語言,它的前身是LiveScript;而Java的前身是Oak語言。下面對兩種語言間的異同作如下比較:1.基于對象和面向?qū)ο驤ava是一種真正的面向?qū)ο蟮恼Z言,即使是開發(fā)簡單的程序,必須設(shè)計對象。JavaScript是種腳本語言,它可以用來制作與網(wǎng)絡(luò)無關(guān)的,與用戶交互作用的復(fù)雜軟件。它是一種基于對象(ObjectBased)和事件驅(qū)動(EventDriver)的編程語言。因而它本身提供了非常豐富的內(nèi)部對象供設(shè)計人員使用。2.解釋和編譯兩種語言在其瀏覽器中所執(zhí)行的方式不一樣。Java的源代碼在傳遞到客戶端執(zhí)行之前,必須經(jīng)過編譯,因而客戶端上必須具有相應(yīng)平臺上的仿真器或解釋器,它可以通過編譯器或解釋器實現(xiàn)獨立于某個特定的平臺編譯代碼的束縛。JavaScript是一種解釋性編程語言,其源代碼在發(fā)往客戶端執(zhí)行之前不需經(jīng)過編譯,而是將文本格式的字符代碼發(fā)送給客戶編由瀏覽器解釋執(zhí)行。3.強變量和弱變量兩種語言所采取的變量是不一樣的。Java采用強類型變量檢查,即所有變量在編譯之前必須作聲明。如:Integerx;Stringy;x=1234;x=4321;其中X=1234說明是一個整數(shù),Y=4321說明是一個字符串。JavaScript中變量聲明,采用其弱類型。即變量在使用前不需作聲明,而是解釋器在運行時檢查其數(shù)據(jù)類型,如:x=1234;y="4321";前者說明x為其數(shù)值型變量,而后者說明y為字符型變量。4.代碼格式不一樣Java是一種與HTML無關(guān)的格式,必須通過像HTML中引用外媒體那么進行裝載,其代碼以字節(jié)代碼的形式保存在獨立的文檔中。JavaScript的代碼是一種文本字符格式,可以直接嵌入HTML文檔中,并且可動態(tài)裝載。編寫HTML文檔就像編輯文本文件一樣方便。
javascript的變量是弱類型。
閉包:在類似C/C++這種的非函數(shù)式編程語言中,也可以定義函數(shù)指針并返回,但外層函數(shù)在執(zhí)行結(jié)束后為內(nèi)層函數(shù)定義的上下文信息會被銷毀,而在閉包中,則保存了返回的函數(shù),還包含返回函數(shù)的上下文信息。閉包有兩個用途,一是方便實現(xiàn)嵌套的回調(diào)函數(shù),二是隱藏對象的細節(jié)。
原型鏈:創(chuàng)建對象時,應(yīng)該在構(gòu)造函數(shù)內(nèi)定義一般成員,而是其原型定義成員函數(shù)。JS中有兩個特殊的對象:Object與Function,它們都是構(gòu)造函數(shù),用于生成對象。Object.prototype是所有對象的祖先,F(xiàn)unction.prototype是所有函數(shù)的原型,包括構(gòu)造函數(shù)??梢詫S的對象分為三類:用戶創(chuàng)建對象,構(gòu)造函數(shù)對象,原型對象。所有對象中都有一個__proto__屬性,其指向此對象的原型。
構(gòu)造函數(shù)對象有prototype,指向其原型對象,通過此構(gòu)造函數(shù)創(chuàng)建對象時,新創(chuàng)建對象的__proto__屬性將會指向構(gòu)造函數(shù)的prototype屬性。原型對象有一個constructor屬性,指向它對應(yīng)的構(gòu)造函數(shù)。
parseFloat 方法
返回由字符串轉(zhuǎn)換得到的浮點數(shù)。
parseFloat(numString)
必選項 numString 參數(shù)是包含浮點數(shù)的字符串。
--------------------------------------------------
parseInt 方法
返回由字符串轉(zhuǎn)換得到的整數(shù)。
parseInt(numString, [radix])
參數(shù)
numString
必選項。要轉(zhuǎn)換為數(shù)字的字符串。
radix
可選項。在 2 和 36 之間的表示 numString 所保存數(shù)字的進制的值。如果沒有提供,則前綴為 '0x' 的字符串被當(dāng)作十六進制,前綴為 '0' 的字符串被當(dāng)作八進制。所有其它字符串都被當(dāng)作是十進制的。