Web基礎(chǔ)之JavaScript(一)

JavaScript概述:

  • 是一種網(wǎng)頁編程技術(shù)淫茵,用來向HTML頁面添加動態(tài)交互效果;
  • 是一種基于對象和事件驅(qū)動的解釋性腳本語言,具有與Java和C語言類似的語法碉克;
  • 可直接嵌入HTML頁面顶考,由瀏覽器解釋執(zhí)行赁还,不進行預(yù)編譯。
    發(fā)展史
  • 正式名稱是“ECMSCript”,由ECMA組織發(fā)展和維護驹沿;
  • CMA-262是正式的JavaScript(Netscape)和JScript(Microsoft)艘策。
  • 網(wǎng)景公司在Netscape2.0首先推出了JavaScript。微軟公司從IE3.0開始提供對客戶端JavaScript的支持渊季,并另取名為JScript朋蔫。
    特點
  • 可以使用任何文本編輯工具編寫,只需要瀏覽器就可以執(zhí)行程序却汉。
  • 解釋執(zhí)行:事先不解釋驯妄,逐行執(zhí)行。
  • 基于對象:內(nèi)置大量現(xiàn)成對象合砂。
  • 適宜:客戶端數(shù)據(jù)計算富玷、客戶端表單合法性驗證、瀏覽器事件的觸發(fā)既穆、網(wǎng)頁特殊顯示效果制作赎懦。
    定義方式
  • 直接定義在事件中。如:
<input type="button" value="第一個按鈕" onclick="alert('hello world');"/>

在<head>標(biāo)簽中嵌入<script language=“javaScript” type=“text/javscript”></script>標(biāo)簽幻工,在其中放置javaScript代碼励两;

  • 將代碼寫在單獨的.js文件中,在html頁面的<head>里使用<script>引入囊颅。如:
<head> <script language="javascript" src="myScript.js"></script> </head>

錯誤查看

  • 解釋性代碼当悔,若代碼錯誤傅瞻,則頁面無任何效果。
  • 使用瀏覽器里的開發(fā)者工具盲憎;

注釋:單行使用// ; 多行使用:/**/

JavaScript基礎(chǔ)語法
編寫

  • 由Unicode字符集編寫嗅骄。
  • 語句:表達式、關(guān)鍵字饼疙、運算符組成溺森;大小寫敏感;使用分號結(jié)束窑眯。
    常量屏积、標(biāo)識符和關(guān)鍵字
    1)常量:直接在程序中出現(xiàn)的數(shù)據(jù)值(字面量),用完就丟棄了磅甩。如alert(“hello");
    2)標(biāo)識符:由不以數(shù)字開頭的字母炊林、數(shù)字、下劃線卷要、$組成渣聚。常用于表示函數(shù)、變量等的名稱僧叉。不能和保留關(guān)鍵字重復(fù)奕枝,如break、if等彪标。
    3)關(guān)鍵字:只有系統(tǒng)才能用的標(biāo)識符。
    變量
    1)聲明:使用關(guān)鍵字var聲明變量掷豺,如var x,y;
    【注意:以var關(guān)鍵字聲明捞烟,聲明的時候不確定類型,變量的類型以賦值為準(zhǔn)当船。如:var x,y,z; x=10; y="mary"; z=true;】
    2)變量初始化:使用等號賦值题画。
    【注意:沒有初始化的變量則自動取值為undefined,如:var count = 0;】
    3)變量命名同標(biāo)識符的規(guī)則德频,大小寫敏感苍息。
    數(shù)據(jù)類型
    1)基本類型:number數(shù)字、string字符串壹置、boolean布爾
    2)特殊類型:null空竞思、undefined未定義
    3)復(fù)雜類型:array數(shù)組、object對象
    number數(shù)字
    —> 不區(qū)分整型數(shù)值和浮點型數(shù)值:所有數(shù)字都采用64位浮點格式存儲钞护,類似于double格式盖喷。
    —> 整數(shù):16進制數(shù)前面加上0x,8進制前面加0难咕。
    —> 浮點數(shù):使用小數(shù)點記錄數(shù)據(jù)课梳,如3.4距辆,5.6;使用指數(shù)記錄數(shù)據(jù)暮刃,如4.3e23=4.3X10^23
    string字符串:
    —> 表示文本:由Unicode字符跨算、數(shù)字、標(biāo)點符號組成的序列椭懊。
    —> 首尾由單引號或雙引號括起來诸蚕。
    —> 特殊字符需要轉(zhuǎn)義,用轉(zhuǎn)義符\灾搏,如:\n挫望,\,\’狂窑,\“
    【注意:可用在正則表達式媳板,只允許錄入漢字[^\u4e00-\u9fa5$],每個漢字都有轉(zhuǎn)義符泉哈◎刃遥】
    boolean布爾
    —>僅有兩個值:true和false;實際運算中true=1丛晦,false=0

數(shù)據(jù)類型的轉(zhuǎn)換
1)轉(zhuǎn)換方式
—> 隱式轉(zhuǎn)換:使用隱式自動轉(zhuǎn)換規(guī)則直接轉(zhuǎn)換
—> 顯式轉(zhuǎn)換:利用系統(tǒng)提供的函數(shù)
【注意:不建議使用隱式轉(zhuǎn)換】
隱式轉(zhuǎn)換
1)JavaScript屬于松散類型的程序語言
—> 變量在聲明時不需要指定數(shù)據(jù)類型奕纫。
—> 變量由賦值操作確定數(shù)據(jù)類型。
2)不同類型數(shù)據(jù)在計算過程中會自動進行轉(zhuǎn)換
—> ①數(shù)字+字符串:數(shù)字轉(zhuǎn)換為字符串
—> ②數(shù)字+布爾值:true轉(zhuǎn)換為1烫沙,false轉(zhuǎn)換為0
—> ③字符串+布爾值:布爾值轉(zhuǎn)換為字符串true或false
—> ④布爾值+布爾值:布爾值轉(zhuǎn)換為數(shù)值1或0
顯式轉(zhuǎn)換
toString:轉(zhuǎn)成字符串匹层,所有數(shù)據(jù)類型均可轉(zhuǎn)換為string類型。
parseInt:強制轉(zhuǎn)換成整數(shù)锌蓄,如果不能轉(zhuǎn)換升筏,則返回NaN。(去尾法)
parseFloat:牽制轉(zhuǎn)換成浮點數(shù)瘸爽,如果不能轉(zhuǎn)換您访,則返回NaN。
typeof:查詢數(shù)值當(dāng)前類型剪决,返回string/number/boolean/object灵汪。
NaN:not a number,非常特殊柑潦,它不是數(shù)字享言,所以任何數(shù)跟它都不相等,甚至NaN本身也不等于NaN
isNaN(str):is not a number渗鬼,判斷文本是否為數(shù)值担锤,false為數(shù)值,true為非數(shù)值
null:null在程序中代表“無值”或者“無對象”乍钻「匮可以通過給一個變量賦值null來清除變量的內(nèi)容铭腕。
undefined:聲明了變量但從未賦值或這對象屬性不存在。

  • 算術(shù)運算:+ - * / %
  • 關(guān)系運算:> < <= >= == != ===(嚴(yán)格相等多糠,值與類型都相等) !==(非嚴(yán)格相等)
  • 邏輯運算:累舷! && ||
  • 條件運算:? :
  • 流程控制:switch-case for while

JavaScript常用內(nèi)置對象
*概念:
1)JavaScript是一種基于對象的語言,對象是JavaScript中最重要的元素夹孔。
2)JavaScript包含多種對象:內(nèi)置對象被盈、自定義對象、瀏覽器對象搭伤、HTML DOM對象只怎、ActiveX對象

  • 使用:
    1)對象由屬性和方法封裝而成。
    2)屬性的引用:使用點“.”運算符怜俐、通過下標(biāo)的方式引用身堡。
    3)對象的方法的引用:ObjectName.methods()。
  • 常用內(nèi)置對象
    1)簡單數(shù)據(jù)對象:String拍鲤、Number贴谎、Boolean
    2)組合對象:Array、Date季稳、Math
    3)復(fù)雜對象:Function擅这、RegExp

String
1)創(chuàng)建:var str1 = "hello world”; var str2 = new String("hello world”);
2)屬性:length;如:str1.length;
3)方法:
—> toLowerCase():轉(zhuǎn)為小寫景鼠;
—> charAt(index)/charCodeAt(index):獲取index處的字符/Unicode編碼
—> indexOf(str) / lastIndexOf(str):查詢位置,沒有則返回-1
—> substring(start,end):截取
—> substr(start,length):截取
—> replace(oldStr,newStr):替換
—> split(bystr):分割
正則相關(guān)
—> replace(regexp,newstr):根據(jù)正則替換
—> match(regexp):返回匹配字符串的數(shù)組
—> search(regexp):返回匹配的首個字符串的索引值
匹配模式:JavaScript中使用正則表達式:使用兩個斜杠仲翎, / 表達式 / 匹配模式
① g:global,全局匹配铛漓;② m:multilin溯香,多行匹配;③ i:忽略大小寫匹配票渠。
如:var array=str1.match(/\d/g); //即全局匹配數(shù)字

  • Array
    一列有多個數(shù)據(jù)逐哈》移可以有不同類型的數(shù)據(jù)问顷。JavaScript只有數(shù)組沒有集合竹椒;
    1)創(chuàng)建:
    ① var arr = [“mary”,10,true];//用中括號食寡!不是大括號人乓;常用键耕;聲明的同時并賦值句伶。
    ② var arr = new Array(“mary",10,true);//聲明的同時并賦值稳懒。
    ③ var arr = new Array();或var arr = new Array(7);//可有長度也可沒有長度儡羔。即便寫了長度程癌,也能把第8個數(shù)據(jù)存入嘴瓤!先聲明后賦值扫外。
    2)屬性:length莉钙;
    3)二維數(shù)組:通過指定數(shù)組中的元素為數(shù)組的方式可以創(chuàng)建二維甚至多維數(shù)組。week[0][1] = “Monday”筛谚;
    4)方法:
    —> join(str):以bystr作為連接數(shù)組中元素的分隔字符磁玉,返回拼接后的數(shù)組。
    //也可直接使用新的下標(biāo)賦值驾讲,如:var arr = new Array(4);arr[5]=5;
    —>** toString():輸出數(shù)組的內(nèi)容(以逗號隔開)蚊伞。
    —> concat(value,…):value作為數(shù)組元素連接到數(shù)組的末尾(數(shù)組連接),返回連接后的一個新數(shù)組吮铭。原數(shù)組內(nèi)容不變时迫。
    —> slice(start,end):截取從start開始到end結(jié)束(不包含end)的數(shù)組元素。end省略代表從start開始到數(shù)組結(jié)尾谓晌。
    —> reverse():數(shù)組反轉(zhuǎn)掠拳,改變原數(shù)組元素的順序。
    —> pop(): 刪除并返回最后一個元素
    —> shift():刪除并返回第一個元素
    —>
    unshift():向數(shù)組開頭添加一個或更多元素扎谎,并返回新的長度
    —> push():向數(shù)組末尾添加一個或更多元素碳想,并返回新的長度
    —> splice():刪除元素,并向數(shù)據(jù)添加新元素
    —>
    toSource()**:返回該對象的源代碼毁靶。
    —> valueOf():返回數(shù)組對象原始值胧奔。
    —> sort():數(shù)組排序,默認按照字符串的編碼順序進行排序预吆。
    —> sort(sortfunc):sortfunc用來確定元素順序的函數(shù)名龙填。函數(shù)的形式如:
function(a,b) { return a-b; }

Math
用于執(zhí)行數(shù)字相關(guān)。
1)沒有構(gòu)造函數(shù)Math()拐叉。
2)不需要創(chuàng)建岩遗,直接把Math作為對象使用就可以調(diào)用其所有屬性和方法。如:不需要創(chuàng)建var data=Math.PI; 直接使用Math.PI;像Java中的靜態(tài)類一樣凤瘦。
3)常用屬性:都是數(shù)學(xué)常數(shù)宿礁,如:Math.E(自然數(shù))、Math.PI(圓周率)蔬芥、Math.LN2(ln2)梆靖、Math.LN10(ln10)等
4)常用方法:
①三角函數(shù):Math.sin(x)、Math.cos(x)笔诵、Math.tan(x)等
②反三角函數(shù):Math.asin(x)返吻、Math.acos(x)等
③計算函數(shù):Math.sqrt(x)、Math.log(x)乎婿、Math.exp(x)等
④數(shù)值比較函數(shù):Math.abs(x)测僵、Math.max(x,y,…)、Math.random()谢翎、Math.round(x)等
【注意:①Math.random():是一個 >=0 且 <1 的正小數(shù)捍靠;②Math.floor(x):地板沐旨,小于等于x,并且與它最接近的整數(shù)榨婆。注意:將負數(shù)舍入為更小的負數(shù)希俩,而不是向0進行舍入。③Math.ceil(x):天花板纲辽,返回大于等于x颜武,并且與它最接近的整數(shù)。注意:不會將負數(shù)舍入為更小的負數(shù)拖吼,而是向0舍入鳞上。】

Number
是對原始數(shù)值的包裝對象吊档。
1)創(chuàng)建:
① var myNum=new Number(value);
② var myNun=Number(value);
2)方法:
—>toString:數(shù)值轉(zhuǎn)換為字符串
—>toFixed(n):數(shù)值轉(zhuǎn)換為字符串篙议,并保留小數(shù)點后n位數(shù),多了就截斷怠硼,四舍五入鬼贱。少了就用0補足,常用作數(shù)值的格式化香璃。

RegExp
正則表達式對象这难。JavaScript中,正則表達式的應(yīng)用分為兩類:
① 和String對象的三個方法結(jié)合使用葡秒,實現(xiàn)對string的操作姻乓,如:replace/match/search
② 調(diào)用正則表達式對象的常用test方法測試,RegExpObject.test(string):如果字符串string中含有與RegExpObject匹配的文本眯牧,則返回true蹋岩,否則返回false;
1)創(chuàng)建:
① var reg1=/^\d{3,6}$/;
② var reg2=new RegExp("^\d{3,6}$");

Date
用于處理日期和時間
1)創(chuàng)建:
① var now = new Date();//當(dāng)前日期和時間
② var now = new Date("2013/01/01 12:12:12”)/(“Oct 1, 2013”)/(2013,1,1);
2)方法:
—> 讀取相關(guān):getDay()(星期)学少、getDate()剪个、getMonth()、getFullYear()…
—> 修改相關(guān):setDay()版确、setDate()扣囊、setMonth()、setHours() ……
—> 轉(zhuǎn)換字符串:得到某種格式的字符串顯式阀坏,常用于頁面顯式如暖,如:toString()笆檀、toDateString()忌堂、toLocaleTimeString()

Function
函數(shù)。是一組可以隨時隨地運行的語句酗洒。Function對象可以表示開發(fā)者定義的任何函數(shù)士修。函數(shù)實際上是功能完整的對象枷遂。
1)定義::function 函數(shù)名(參數(shù)){ 函數(shù)體; return; }
【注意:由關(guān)鍵字function定義;函數(shù)名的定義規(guī)則與標(biāo)識符一致棋嘲,大小寫敏感酒唉;可以使用變量、常量或表達式作為函數(shù)調(diào)用的參數(shù)沸移;返回值必須使用return痪伦。】
2)調(diào)用:函數(shù)可以通過其名字加上括號中的參數(shù)進行調(diào)用雹锣。如果有多個參數(shù)网沾,則參數(shù)之間用逗號隔開。
3)創(chuàng)建:
① 使用function關(guān)鍵字明文的聲明一個方法(最常用蕊爵,用于功能相關(guān)的方法)
② 使用Function對象創(chuàng)建函數(shù)辉哥,語法:
var functionName=new Function(arg1,...argN,functionBody);//最后一個參數(shù)是方法體,前面的其它參數(shù)是方法的參數(shù)攒射。

<input type="button" value="使用Function對象創(chuàng)建函數(shù)" onclick="testFunction();" />
function testFunction(){
var f = new Function("a","b","alert(a+b);");
f(10,20);
}

【注意:需求:有些方法不需要顯式的存在醋旦,只是為其他方法里所使用(類似于java中的內(nèi)部類);缺陷:方法體不能復(fù)雜会放∷瞧耄】

③ 創(chuàng)建匿名函數(shù),語法:
var func=function(arg1,...argN){ func_body; return value; }
4)全局函數(shù) :可用于所有內(nèi)建的JavaScript對象咧最。常用的全局函數(shù)有:
—> encodeURI(str):把字符串作為URI進行編碼(大寫i)箩张。
—> decodeURI(str):對encodeURI()函數(shù)編碼過的URI進行解碼。
—> parseInt/parseFloat:
—> isNaN(str):判斷文本是否為數(shù)值
—> eval(str):用于計算某個字符串窗市,以得到結(jié)果先慷;或者用于執(zhí)行其中的JavaScript代碼∽刹欤【注意:eval(str)只接受原始字符串作為參數(shù)论熙,如果參數(shù)中沒有合法的表達式和語句,則拋出異常摄狱;如eval(“2+3”)脓诡。】

Arguments

  1. 是一種特殊對象媒役,在函數(shù)代碼中祝谚,代表當(dāng)前方法被傳入的所有的參數(shù),形成一個數(shù)組酣衷。
    2)在函數(shù)代碼中交惯,可以使用arguments訪問所有參數(shù)。
    ①arguments.length:函數(shù)的參數(shù)個數(shù); ②arguments.[i]:第i個參數(shù)
    3)JavaScript中席爽,沒有傳統(tǒng)意義上的重載(方法名相同意荤,但是參數(shù)不同),即:如果方法名相同只锻,則以最后一次定義的為準(zhǔn)玖像。如果想在JavaScript中實現(xiàn)類似于重載的效果,就需要使用arguments對象齐饮。即在同名方法體中判斷參數(shù)的個數(shù)來確定方法體捐寥。如
function(){ if(argumtents.length==1){…} else{…} }

博客地址:Web基礎(chǔ)之JavaScript(一)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祖驱,隨后出現(xiàn)的幾起案子上真,更是在濱河造成了極大的恐慌,老刑警劉巖羹膳,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睡互,死亡現(xiàn)場離奇詭異,居然都是意外死亡陵像,警方通過查閱死者的電腦和手機就珠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來醒颖,“玉大人妻怎,你說我怎么就攤上這事∨⑶福” “怎么了逼侦?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長腰耙。 經(jīng)常有香客問我榛丢,道長,這世上最難降的妖魔是什么挺庞? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任晰赞,我火速辦了婚禮,結(jié)果婚禮上选侨,老公的妹妹穿的比我還像新娘掖鱼。我一直安慰自己,他們只是感情好援制,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布戏挡。 她就那樣靜靜地躺著,像睡著了一般晨仑。 火紅的嫁衣襯著肌膚如雪褐墅。 梳的紋絲不亂的頭發(fā)上拆檬,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音掌栅,去河邊找鬼。 笑死码泛,一個胖子當(dāng)著我的面吹牛猾封,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播噪珊,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼晌缘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了痢站?” 一聲冷哼從身側(cè)響起磷箕,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阵难,沒想到半個月后岳枷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡呜叫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年空繁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朱庆。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡盛泡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娱颊,到底是詐尸還是另有隱情傲诵,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布箱硕,位于F島的核電站拴竹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏剧罩。R本人自食惡果不足惜殖熟,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斑响。 院中可真熱鬧菱属,春花似錦、人聲如沸舰罚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽营罢。三九已至赏陵,卻和暖如春饼齿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝙搔。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工缕溉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吃型。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓证鸥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勤晚。 傳聞我的和親對象是個殘疾皇子枉层,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容