JavaScript的優(yōu)點是讓網(wǎng)頁更活靈活現(xiàn) 他能補助與網(wǎng)頁實現(xiàn)各種功能和穿插 JavaScript 語言的前身叫作LiveScript。自從Sun公司推出著名的Java語言之后, Netscape公司引進(jìn)了Sun公司有關(guān)Java的程序設(shè)計概念,將自己原有的LiveScript重新進(jìn)行設(shè)計,并更名為JavaScript。這所 以取名為JavaScript,原因就在于JavaScript作為一種嵌入HTML文檔的、基于對象的腳本設(shè)計語言。其中很大一部分的語法同Java語 言很相似,而且JavaScript的設(shè)計可以使它很容易地同Java語言一同工作,它可以充分支持Java的applet小應(yīng)用程序,Java的 applet小應(yīng)用程序也可以很方便地訪問已有的JavaScript代碼。所以,也可以JavaScript看成是Java語言的某種簡化版本。 JavaScript的優(yōu)點 在JavaScript這樣的用戶端腳本語言語言出現(xiàn)之前,傳統(tǒng)的數(shù)據(jù)提交和驗證工作均由用戶端瀏覽器通過網(wǎng)絡(luò)傳輸?shù)椒?wù)器上進(jìn)行。如果數(shù)據(jù)量很大,這對于網(wǎng)絡(luò)和服務(wù)器的資源來說實在是一種無形的浪費。而使用JavaScript就可以在客戶端進(jìn)行數(shù)據(jù)驗證。 JavaScript可以方便地操縱各種瀏覽器的對象,可以使用JavaScript來控制瀏覽器的外觀,狀態(tài)甚至運行方式,可以根據(jù)用戶的需要“定制”瀏覽器,從而使網(wǎng)頁更加友好。 JavaScript可以使多種任務(wù)僅在用戶端就可以完成而不需要網(wǎng)絡(luò)和服務(wù)器的參與,從而支持分布式的運算和處理。 JavaScript的局限性 在WWW 上有很多瀏覽器,如Netscape Navigator,Mosaic和HotJava等,但每種瀏覽器支持JavaScript的程度是不一樣的,支持和不完全支持JavaScript的 瀏覽器在瀏覽一個帶有JavaScript腳本的主頁時,效果會有一定的差距,有時甚至?xí)@示不出來。 當(dāng)把JavaScript的一個設(shè)計目 標(biāo)設(shè)定為"Web安全性"時,就需要犧牲JavaScript的一些功能。這時,純粹的JavaScript將不能打開、讀寫和保存用戶計算機(jī)上的文件。 它有權(quán)訪問的唯一信息就是它所嵌入的那個Web主頁中的信息,簡言之,JavaScript將只存在于它自己的小小世界----Web主頁里。 希望對你有幫助

因為努力和真誠,有更多的客戶和我們聚集在一起,為了共同目標(biāo),成都創(chuàng)新互聯(lián)在工作上密切配合,從創(chuàng)業(yè)型企業(yè)到如今不斷成長,要感謝客戶對我們的高要求,讓我們敢于面對挑戰(zhàn),才有今天的進(jìn)步與發(fā)展。從網(wǎng)站到重慶小程序開發(fā)公司,軟件開發(fā),app軟件開發(fā),10年企業(yè)網(wǎng)站建設(shè)服務(wù)經(jīng)驗,為企業(yè)提供網(wǎng)站設(shè)計,網(wǎng)站托管、服務(wù)器租用一條龍服務(wù).為企業(yè)提供成都全網(wǎng)營銷推廣,按需定制開發(fā),原創(chuàng)設(shè)計,10年品質(zhì),值得您的信賴.
你腳本的位置放錯了,你執(zhí)行那段腳本時,html代碼還沒解析完,dom也沒生成好。所以報錯。
這樣寫,或者在onload后再調(diào)用。
body
form name="js" method="post"
/form
/body
script
function user(){
var form=document.getElementsByTagName("form")[0];
this.name=function(){
return form.getAttribute("name");
};
}
var user=new user();
alert(user.name());
/script
不知道,大家對語言中變量的“聲明”與“定義”是怎么理解的,
我的理解如下:
“聲明”變量,只是僅僅聲明,而“定義”變量,指聲明了,并且賦值了。
例如:
復(fù)制代碼
代碼如下:
var
name;//只是聲明
var
num
=
11;//聲明,并且賦值,即定義了
var
password
=
"yangjiang";//聲明,并且賦值,即定義了
下面是幾點總結(jié):
變量的作用域:全局的和局部的。(注意:如果嘗試讀取一個未聲明的變量的值,javascript會生成一個錯誤)
第一點:在都使用var關(guān)鍵字修飾變量的情況下,如果給一個局部變量或函數(shù)的參數(shù)聲明的名字與某個全局變量的名字相同,
那么就有效地隱藏了這個全局變量。
例如:
復(fù)制代碼
代碼如下:
var
scope1
=
"global";//var修飾
function
checksScope(){
var
scope1
=
"local";//var修飾
document.write(scope1);
}checksScope();//local
第二點:如果嘗試給一個未用
var
關(guān)鍵字聲明的變量,那么,隱式聲明的變量總是被創(chuàng)建為全局變量,即使
該變量只在一個函數(shù)體內(nèi)使用(只有該函數(shù)運行了,才會發(fā)生作用),注意不支持函數(shù)嵌套的情形。
例如:
復(fù)制代碼
代碼如下:
scope2
=
"globalAAAAA";//沒有使用var修飾(js會默認(rèn)將其聲明為全局變量)
function
checkScopeA(){
scope2
=
"localAAAAA";//沒有使用var修飾(js會默認(rèn)將其聲明為全局變量)
document.write("br/"+scope2);
myscope
=
"myLocalAAAAA";//沒有使用var修飾(js會默認(rèn)將其聲明為全局變量)
document.write(","+myscope);
}
checkScopeA();//localAAAAA,myLocalAAAAA
*A
document.write("br/"+scope2);//localAAAAA
*B
document.write("br/"+myscope);//myLocalAAAAA
*C
如果將上面的例子中的
*A處的代碼注釋掉,
例如:
復(fù)制代碼
代碼如下:
scope2
=
"globalAAAAA";//沒有使用var修飾(js會默認(rèn)將其聲明為全局變量)
function
checkScopeA(){
scope2
=
"localAAAAA";//沒有使用var修飾(js會默認(rèn)將其聲明為全局變量)
document.write("br/"+scope2);
myscope
=
"myLocalAAAAA";//沒有使用var修飾(js會默認(rèn)將其聲明為全局變量)
document.write(","+myscope);
}
//checkScopeA();
*A
document.write("br/"+scope2);//globalAAAAA
*B
document.write("br/"+myscope);//發(fā)生錯誤
*C
因為函數(shù)checkScopeA沒有執(zhí)行,所以
*B處輸出為globalAAAAA;
因為函數(shù)checkScopeA沒有執(zhí)行,所以變量myscope沒有聲明,如果嘗試讀取一個未聲明的變量,會發(fā)生錯誤。
第三點:
在javascript中,函數(shù)的定義是可以嵌套的。由于
每個函數(shù)都有它自己的局部作用域,所以有可能出現(xiàn)幾個局部作用域的嵌套層。
例如:
復(fù)制代碼
代碼如下:
var
scope3
=
"global
scope";
//定義了一個全局變量
function
checkScopeB(){
var
scope3
=
"local
scope";
//定義了一個局部變量,覆蓋了全局變量scope3
function
nested(){
var
scope3
=
"nested
scope";
//在函數(shù)的函數(shù)的內(nèi)部,定義了一個局部變量
document.write("br/"+scope3);
//nested
scope
}
nested();
}
checkScopeB();//nested
scope
第四點:
在javascript中,沒有塊級作用域,函數(shù)中聲明的所有變量,無論是在哪里聲明的,在整個函數(shù)中它們都是有聲明的。
在javascript中,沒有塊級作用域,函數(shù)中定義的所有變量,無論是在哪里定義的,在整個函數(shù)中它們都是有定義的。
例如:
復(fù)制代碼
代碼如下:
function
test(o){//根據(jù)以上的說明:此函數(shù)中的i,j,k三個變量的作用域是相同的。
var
i
=
0;
//變量
i
在整個函數(shù)中都有定義
if(typeof
o
==
"object"){
var
j
=
;
//變量
j
在整個函數(shù)中都有定義,而不僅僅是在
if
語句塊
for(var
k=0;k10;k++){//變量
k
在整個函數(shù)中都有定義,而不僅僅是在
if
語句塊
document.write("br/k的值為:"+k);
}
document.write("br/for循環(huán)外k的值:"+k);//此時的
k
仍然被定義了,k=10
}
document.write("br/j的值:"+j);
//變量
j
被聲明了,但可能沒有被初始化
因為可能往函數(shù)中
傳入的參數(shù)
不是對象
,if語句塊不會執(zhí)行
}
下面通過兩種方式調(diào)用此函數(shù):
方式一:傳入對象
test({});//輸出結(jié)果:上例中的注釋
方式二:什么都不傳
test();//輸出結(jié)果:j的值:undefined
想不明白的是,在第二種方式中的輸出結(jié)果,為什么會是
undefined。我當(dāng)時猜的是:j的值:0
后來,這本書上面說:
由于局部變量在整個函數(shù)體內(nèi)都是有聲明(或定義)的,這就意味著在整個函數(shù)體中都隱藏了同名的全局
變量。雖然
局部變量在整個函數(shù)體內(nèi)中都是有聲明(或定義)的,但是在執(zhí)行var語句之前,它是不會被初始化的。
這樣的話,上面的方式二調(diào)用的輸出結(jié)果,就比較好解釋了,由于變量j在整個函數(shù)中都有定義,而又由于傳入函數(shù)的參數(shù)為空,所以函數(shù)體中的if語句不會執(zhí)行,從而使得j的值為undefined.(這是我參照上面書上說的那句話的理解)
下面的例子,更好的說明:
復(fù)制代碼
代碼如下:
var
sssss
=
"全局變量";
function
f(){
document.write("br/"+sssss);//輸出:undefined
而不是輸出"全局變量"
var
sssss
=
"局部變量";
document.write("br/"+sssss);//輸出:局部變量
}
當(dāng)前題目:javascript權(quán),JavaScript權(quán)威指南
轉(zhuǎn)載源于:http://chinadenli.net/article1/dsgdjid.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、移動網(wǎng)站建設(shè)、虛擬主機(jī)、服務(wù)器托管、搜索引擎優(yōu)化、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)