javascript
JavaScript(JS)之简单介绍
一、JavaScript的歷史
-
1992年Nombas開發(fā)出C-minus-minus(C--)的嵌入式腳本語言(最初綁定在CEnvi軟件中).后將其改名ScriptEase.(客戶端執(zhí)行的語言)
-
Netscape(網(wǎng)景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0產(chǎn)品中開發(fā)出一套livescript的腳本語言.Sun和Netscape共同完成.后改名叫Javascript
-
微軟隨后模仿在其IE3.0的產(chǎn)品中搭載了一個JavaScript的克隆版叫Jscript.
-
為了統(tǒng)一三家,ECMA(歐洲計算機制造協(xié)會)定義了ECMA-262規(guī)范.國際標準化組織及國際電工委員會(ISO/IEC)也采納 ECMAScript 作為標準(ISO/IEC-16262)。從此,Web 瀏覽器就開始努力(雖然有著不同的程度的成功和失敗)將 ECMAScript 作為 JavaScript 實現(xiàn)的基礎(chǔ)。EcmaScript是規(guī)范.
二、ECMAScript ?
盡管 ECMAScript 是一個重要的標準,但它并不是 JavaScript 唯一的部分,當然,也不是唯一被標準化的部分。實際上,一個完整的 JavaScript 實現(xiàn)是由以下 3 個不同部分組成的:
- 核心(ECMAScript)?
- 文檔對象模型(DOM) Document object model (整合js,css,html)
- 瀏覽器對象模型(BOM) Broswer object model(整合js和瀏覽器)
- Javascript 在開發(fā)中絕大多數(shù)情況是基于對象的.也是面向?qū)ο蟮??
簡單地說,ECMAScript 描述了以下內(nèi)容:
- 語法?
- 類型?
- 語句?
- 關(guān)鍵字?
- 保留字?
- 運算符?
- 對象 (封裝 繼承 多態(tài)) 基于對象的語言.使用對象.
三、JavaScript基礎(chǔ)
1.JS的引入方式
1 直接編寫<script>alert('hello yuan')</script> 2 導入文件<script src="hello.js"></script>2.JS的變量、
1.聲明變量時不用聲明變量類型,全部使用var關(guān)鍵字?
var a;<br>a=3;2.一行可以聲明多個變量.并且可以是不同類型
var name="yuan", age=20, job="lecturer";3.一行可以聲明多個變量.并且可以是不同類型
4.變量命名,首字符只能是字母,下劃線,$美元符 三選一,余下的字符可以是下劃線、美元符號或任何字母或數(shù)字字符且區(qū)分大小寫,x與X是兩個變量
1 Camel 標記法 2 首字母是小寫的,接下來的字母都以大寫字符開頭。例如: 3 var myTestValue = 0, mySecondValue = "hi"; 4 Pascal 標記法 5 首字母是大寫的,接下來的字母都以大寫字符開頭。例如: 6 Var MyTestValue = 0, MySecondValue = "hi"; 7 匈牙利類型標記法 8 在以 Pascal 標記法命名的變量前附加一個小寫字母(或小寫字母序列),說明該變量的類型。例如,i 表示整數(shù),s 表示字符串,如下所示“ 9 Var iMyTestValue = 0, sMySecondValue = "hi"; 命名規(guī)范3.常量和標識符
常量?:直接在程序中出現(xiàn)的數(shù)據(jù)值
標識符:
關(guān)鍵字:
4.JS的數(shù)據(jù)類型
?數(shù)據(jù)類型有:
number ----- 數(shù)值 boolean ----- 布爾值 string ----- 字符串 undefined ----- undefined null ----- null?數(shù)字類型:
- 不區(qū)分整型數(shù)值和浮點型數(shù)值;
字符串類型(string):
是由Unicode字符、數(shù)字、標點符號組成的序列;字符串常量首尾由單引號或雙引號括起;JavaScript中沒有字符類型;常用特殊字符在字符串中的表達;
字符串中部分特殊字符必須加上右劃線\;常用的轉(zhuǎn)義字符 \n:換行 \':單引號 \":雙引號 \\:右劃線
?布爾類型(bolean):
Boolean類型僅有兩個值:true和false,也代表1和0,實際運算中true=1,false=0
布爾值也可以看作on/off、yes/no、1/0對應(yīng)true/false
Boolean值主要用于JavaScript的控制語句,例如:
Null 和 Undefined類型
Undefined類型
1.Undefined 類型只有一個值,即 undefined。當聲明的變量未初始化時,該變量的默認值是 undefined。
2.當函數(shù)無明確返回值時,返回的也是值 "undefined";
Null類型
另一種只有一個值的類型是 Null,它只有一個專用值 null,即它的字面量。值 undefined 實際上是從值 null 派生來的,因此 ECMAScript 把它們定義為相等的。
盡管這兩個值相等,但它們的含義不同。undefined 是聲明了變量但未對其初始化時賦予該變量的值,null 則用于表示尚未存在的對象(在討論 typeof 運算符時,簡單地介紹過這一點)。如果函數(shù)或方法要返回的是對象,那么找不到該對象時,返回的通常是 null。
?四、運算符
運算符分類
算術(shù)運算符:+ - * / % ++ -- 比較運算符:> >= < <= != == === !==邏輯運算符:&& || !賦值運算符:= += -= *= /=字符串運算符:+ 連接,兩邊操作數(shù)有一個或兩個是字符串就做連接運算?算術(shù)運算符:自增,自減
++i:先計算后賦值 i++:先賦值后計算?假如x=2,那么x++表達式執(zhí)行后的值為3,x--表達式執(zhí)行后的值為1;i++相當于i=i+1,i--相當于i=i-1;
?js不同于python,是一門弱類型語言
能夠進行數(shù)據(jù)轉(zhuǎn)換的叫做弱類型 console.log('1'==1) //True console.log('1'===1) //False強類型 print(1='1') //False 1 靜態(tài)類型語言 2 一種在編譯期間就確定數(shù)據(jù)類型的語言。大多數(shù)靜態(tài)類型語言是通過要求在使用任一變量之前聲明其數(shù)據(jù)類型來保證這一點的。Java 和 C 是靜態(tài)類型語言。 3 動態(tài)類型語言 4 一種在運行期間才去確定數(shù)據(jù)類型的語言,與靜態(tài)類型相反。VBScript 和 Python 是動態(tài)類型的,因為它們確定一個變量的類型是在您第一次給它賦值的時候。 5 強類型語言 6 一種總是強制類型定義的語言。Java 和 Python 是強制類型定義的。您有一個整數(shù),如果不明確地進行轉(zhuǎn)換 ,不能將把它當成一個字符串去應(yīng)用。 7 弱類型語言 8 一種類型可以被忽略的語言,與強類型相反。JS 是弱類型的。在JS中,可以將字符串 '12' 和整數(shù) 3 進行連接得到字符串'123',然后可以把它看成整數(shù) 123 ,所有這些都不需要任何的顯示轉(zhuǎn)換。 9 所以說 Python 既是動態(tài)類型語言 (因為它不使用顯示數(shù)據(jù)類型聲明),又是強類型語言 (因為只要一個變量獲得了一個數(shù)據(jù)類型,它實際上就一直是這個類型了)。 強類型與弱類型?
?注意3:?NaN
var d="yuan";d=+d;alert(d);//NaN:屬于Number類型的一個特殊值,當遇到將字符串轉(zhuǎn)成數(shù)字無效時,就會得到一個NaN數(shù)據(jù)alert(typeof(d));//Number//NaN特點:var n=NaN;alert(n>3);alert(n<3);alert(n==3);alert(n==NaN);alert(n!=NaN);//NaN參與的所有的運算都是false,除了!=?比較運算符
> >= < <= != == === !==?
?等號和非等號的同類運算符是全等號和非全等號。這兩個運算符所做的與等號和非等號相同,只是它們在檢查相等性前,不執(zhí)行類型轉(zhuǎn)換。
console.log(2==2); //trueconsole.log(2=='2'); //true 因為js是弱類型的,所以返回trueconsole.log(2==='2'); //false (===判斷的是類型,類型不一樣就為false了)console.log(2!=='2'); //true !==和===是相反的?注意:
var bResult = "Blue" < "alpha"; alert(bResult); //輸出 true 在上面的例子中,字符串 "Blue" 小于 "alpha",因為字母 B 的字符代碼是 66,字母 a 的字符代碼是 97。比較數(shù)字和字符串另一種棘手的狀況發(fā)生在比較兩個字符串形式的數(shù)字時,比如:var bResult = "25" < "3"; alert(bResult); //輸出 "true" 上面這段代碼比較的是字符串 "25" 和 "3"。兩個運算數(shù)都是字符串,所以比較的是它們的字符代碼("2" 的字符代碼是 50,"3" 的字符代碼是 51)。不過,如果把某個運算數(shù)該為數(shù)字,那么結(jié)果就有趣了:var bResult = "25" < 3; alert(bResult); //輸出 "false"這里,字符串 "25" 將被轉(zhuǎn)換成數(shù)字 25,然后與數(shù)字 3 進行比較,結(jié)果不出所料。總結(jié):比較運算符兩側(cè)如果一個是數(shù)字類型,一個是其他類型,會將其類型轉(zhuǎn)換成數(shù)字類型. 比較運算符兩側(cè)如果都是字符串類型,比較的是最高位的asc碼,如果最高位相等,繼續(xù)取第二位比較.?邏輯運算符
console.log(1&&3); //3 兩個為真才為真(0為假,其他的數(shù)字都代表真) console.log(0&&3); //0 只要有一個為假則為假 console.log(0||3); //3 console.log(2||3); //2?五、流程控制
- 順序結(jié)構(gòu)(從上向下順序執(zhí)行)
- 分支結(jié)構(gòu)
- 循環(huán)結(jié)構(gòu)
分支結(jié)構(gòu):
1. if.....else結(jié)構(gòu):
if (表達式1) {語句1; }else if (表達式2){語句2; }else if (表達式3){語句3; } else{語句4; }?
? ?2.switch-case結(jié)構(gòu)
switch基本格式 switch (表達式) {case 值1:語句1;break;case 值2:語句2;break;case 值3:語句3;break;default:語句4; }?
?示例
switch(x){ case 1:y="星期一"; break; case 2:y="星期二"; break; case 3:y="星期三"; break; case 4:y="星期四"; break; case 5:y="星期五"; break; case 6:y="星期六"; break; case 7:y="星期日"; break; default: y="未定義"; }?
?switch比else if結(jié)構(gòu)更加簡潔清晰,使程序可讀性更強,效率更高。
循環(huán)語句
for循環(huán):(推薦使用)
語法規(guī)則:for(初始表達式;條件表達式;自增或自減){執(zhí)行語句……}?
?for循環(huán)的另一種形式:
for( 變量 in 數(shù)組或?qū)ο?{執(zhí)行語句……}while循環(huán):
語法規(guī)則:while (條件){語句1;... }六、異常處理
try {//這段代碼從上往下運行,其中任何一個語句拋出異常該代碼塊就結(jié)束運行 } catch (e) {// 如果try代碼塊中拋出了異常,catch代碼塊中的代碼就會被執(zhí)行。//e是一個局部變量,用來指向Error對象或者其他拋出的對象 } finally {//無論try中代碼是否有異常拋出(甚至是try代碼塊中有return語句),finally代碼塊中始終會被執(zhí)行。 }注:主動拋出異常 throw Error('xxxx')
?
總結(jié)
以上是生活随笔為你收集整理的JavaScript(JS)之简单介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下的shell简介(三)
- 下一篇: 从零开始的linux 第十一章