什么是 JavaScript 語言
JavaScript 是一種輕量級的腳本語言,所謂“腳本語言”,指的是它不具備開發作業系統的能力,而是只用來撰寫控制其他大型應用程式(比如瀏覽器)的“腳本”,本身不提供任何的 API,都要靠宿主環境(host)提供,所以 JavaScript 只合適嵌入更大型的應用程式環境,去呼叫宿主環境提供的底層 API,
JavaScript 的核心語法部分相當精簡,只包括兩個部分:基本的語法構造(比如運算子、控制結構、陳述句)和標準庫(就是一系列具有各種功能的物件比如Array、Date、Math等),除此之外,各種宿主環境提供額外的 API(即只能在該環境使用的介面),以便 JavaScript 呼叫,以瀏覽器為例,它提供的額外 API 可以分成三大類,
- 瀏覽器控制類:操作瀏覽器
- DOM 類:操作網頁的各種元素
- Web 類:實作互聯網的各種功能
JavaScript 與 Java 的關系
JavaScript 和 Java 的關系,它們是兩種不一樣的語言,但是彼此存在聯系,JavaScript 的基本語法和物件體系,是模仿 Java 而設計的,但是,JavaScript 沒有采用 Java 的靜態型別,”,JavaScript 語言的函式是一種獨立的資料型別,以及采用基于原型物件(prototype)的繼承鏈,這是它與 Java 語法最大的兩點區別,另外,Java 語言需要編譯,而 JavaScript 語言則是運行時由解釋器直接執行,
基本概念
陳述句
javascript以行為單位執行
陳述句是為了完成某種任務而進行的操作,如
var a = 1 + 3;
運算式
6+ 3就叫做運算式
陳述句與運算式的區別
前者主要為了進行某種操作,一般不需要回傳值
后者是為了得到回傳值,一定會回傳一個值
變數
變數是對值的參考,使用變數等同于參考一個值
var a = 1
實際步驟是
var a;
a= 1;
變數提升
由于js引擎的作業方式,先決議代碼獲取所有被宣告的變數,然后再一行一行的執行,這樣就造成了,所有變數的宣告陳述句,都會被提升到代碼的頭部,這就是變數提升
識別符號
變數名就是最常見的識別符號,規則如:
第一個字符,可以是任意Unicode字母(包括英文字母和其他語言的字母),以及美元符號($)和下劃線(_),
第二個字符及后面的字符,除了Unicode字母、美元符號和下劃線,還可以用數字0-9,
注意點
- JavaScript 的變數名區分大小寫,A和a是兩個不同的變數,
- 變數的宣告和賦值,是分開的兩個步驟, 如果只是宣告變數而沒有賦值,則該變數的值是undefined,undefined是一個特殊的值,表示“無定義”,
- 可以在同一條
var命令中宣告多個變數 - JavaScript 是一種動態型別語言,也就是說,變數的型別沒有限制,變數可以隨時更改型別
- 單行注釋 //,多行 /* */ 之間
- 三元運算子
? :,可以用于邏輯判斷,(條件) ? 運算式1: 運算式2上面代碼中,如果“條件”為true,則回傳“運算式1”的值,否則回傳“運算式2”的值,
資料型別
概述
JavaScript 語言的每一個值,都屬于某一種資料型別,共有六種.
- 數值(number):整數和小數(比如1和3.14)
- 字串(string):字符組成的文本(比如"Hello World")
- 布林值(boolean):true(真)和false(假)兩個特定值
- undefined:表示“未定義”或不存在,即由于目前沒有定義,所以此處暫時沒有任何值
- null:表示無值,即此處的值就是“無”的狀態,
- 物件(object):各種值組成的集合
其中數值,字串,布林值成為原始型別的值,undefined和null一般被視為特殊值,物件則為合成型別的值,往往由多個原始型別的值合成
typeof運算子
JavaScript有三種方法,可以確定一個值到底是什么型別,
- typeof運算子
- instanceof運算子
- Object.prototype.toString方法
typeof運算子可以回傳一個值的資料型別,可能有以下結果:
(1)原始型別
數值、字串、布林值分別回傳number、string、boolean,
(2)函式
函式回傳function,雖然函式屬于物件,但是typeof內部是將函式是回傳function
(3)undefined
undefined回傳undefined
(4)其他回傳object
陣列的型別也是object,這表示在JavaScript內部,陣列本質上只是一種特殊的物件,
可以用instanceof運算子進行區分
一些特殊數值
NAN
1)含義
NaN是 JavaScript 的特殊值,表示“非數字”(Not a Number),主要出現在將字串決議成數字出錯的場合,
5 - 'x' // NaN
上面代碼運行時,會自動將字串x轉為數值,但是由于x不是數值,所以最后得到結果為NaN,表示它是“非數字”(NaN),
另外,一些數學函式的運算結果會出現NaN,
Math.acos(2) // NaN
Math.log(-1) // NaN
Math.sqrt(-1) // NaN
0除以0也會得到NaN,
0 / 0 // NaN
需要注意的是,NaN不是獨立的資料型別,而是一個特殊數值,它的資料型別依然屬于Number,使用typeof運算子可以看得很清楚,
typeof NaN // 'number'
(2)運算規則
NaN不等于任何值,包括它本身,
NaN === NaN // false
陣列的indexOf方法內部使用的是嚴格相等運算子,所以該方法對NaN不成立,
[NaN].indexOf(NaN) // -1
NaN在布爾運算時被當作false,
Boolean(NaN) // false
NaN與任何數(包括它自己)的運算,得到的都是NaN,
Infinity
(1)含義
Infinity表示“無窮”,用來表示兩種場景,一種是一個正的數值太大,或一個負的數值太小,無法表示;另一種是非0數值除以0,得到Infinity,
第一個場景是一個運算式的計算結果太大,超出了能夠表示的范圍,因此回傳Infinity,第二個場景是0除以0會得到NaN,而非0數值除以0,會回傳Infinity,
Infinity有正負之分,Infinity表示正的無窮,-Infinity表示負的無窮,
非零正數除以-0,會得到-Infinity,負數除以-0,會得到Infinity,
由于數值正向溢位(overflow)、負向溢位(underflow)和被0除,JavaScript 都不報錯,所以單純的數學運算幾乎沒有可能拋出錯誤,
Infinity大于一切數值(除了NaN),-Infinity小于一切數值(除了NaN),
Infinity與NaN進行比較,總是回傳false,
(2)運算規則
Infinity的四則運算,符合無窮的數學計算規則,
0乘以Infinity,回傳NaN;0除以Infinity,回傳0;Infinity除以0,回傳Infinity,
Infinity加上或乘以Infinity,回傳的還是Infinity,
Infinity減去或除以Infinity,得到NaN,
Infinity與null計算時,null會轉成0,等同于與0的計算,
Infinity與undefined計算,回傳的都是NaN,
布林值
布林值:true/false
下列運算子會回傳布林值:
- 二元邏輯運算子: &&(and), ||(or)
- 前置邏輯運算子: !(not)
- 相等運算子: ===, !==, !=
- 比較運算子: > ,>= ,< ,<=
下面這些值如果轉化為布林值則為false,其他都為true
- undefined
- null
- 0
- NaN
- '' ''/' ' (空字串)
空陣列( [] )和空物件( {} )轉化為布林值為true
資料型別轉換
轉為字串:使用 .toString或者String,
1、 .toString()方法:注意,不可以轉null和underfined
//轉為字串-->toString方法
var bool=true;
console.log(bool.toString());
//注意,toString不能轉null和underfined.
2、String()方法:都能轉
console.log(String(null));
3、隱式轉換:num + "",當 + 兩邊一個運算子是字串型別,一個運算子是其它型別的時候,會先把其它型別轉換成字串再進行字串拼接,回傳字串
var a=true;
var str= a+"";
console.log('str');
轉為數值型別
1、Number():Number()可以把任意值轉換成數值,如果要轉換的字串中有一個不是數值的字符,回傳NaN
console.log(Number(true));
2、parseInt():
var a="12.3px";
console.log(parseInt(a);
//結果:12.3. 如果第一個字符是數字會決議知道遇到非數字結束.
var a="abc2.3";
console.log(parseInt(a);
////結果:回傳NaN,如果第一個字符不是數字或者符號就回傳NaN.
3、parseFloat(): parseFloat()把字串轉換成浮點數,parseFloat()和parseInt非常相似,不同之處在與parseFloat會決議第一個. 遇到第二個.或者非數字結束如果決議的內容里只有整數,決議成整數,
4、隱式轉換:
var str="123";
var num=str-0;
console.log(num);
//結果為數值型;
轉換為Boolean():0 ''(空字串) null undefined NaN 會轉換成false 其它都會轉換成true
1、Boolean():
console.log(Boolean(2));
2、一些環境中
var message;
if(message){};
3、隱式轉換:!!
var str="123";
var bool=!!str;
console.log(str);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/149368.html
標籤:JavaScript
上一篇:JS 多載父頁面
下一篇:JS高階編程技巧--柯理化函式
