本章內容: 簡介 變數 運算符 算術運算符 比較運算符 邏輯運算符 數據類型 語句 簡介 定義 javascript是一門動態的、弱類型的解釋型編程語言,增強頁面動態效果,實現頁面與用戶之間的實時、動態交互。 javascript由三部分組成:ECMAScript、DOM和BOM ECMAScrip ...
本章內容:
- 簡介
- 定義
- 註釋
- 引入文件
- 變數
- 運算符
- 算術運算符
- 比較運算符
- 邏輯運算符
- 數據類型
- 數字
- 字元串
- 布爾類型
- 數組
- Math
- 語句
- 條件語句(if、switch)
- 迴圈語句(for、for in、while)
簡介
定義
javascript是一門動態的、弱類型的解釋型編程語言,增強頁面動態效果,實現頁面與用戶之間的實時、動態交互。
javascript由三部分組成:ECMAScript、DOM和BOM
- ECMAScript由ECMA-262定義,提供核心語言功能(ECMA是歐洲電腦製造商協會)
- DOM(Document Object Model)文檔對象模型,提供訪問和操作網頁內容的方法和介面
- BOM(Browser Object Model)瀏覽器對象模型,提供與瀏覽器交互的方法和介面
註釋
JavaScript中代碼註釋:
- 單行 //
- 多行 /* */
引入文件
1. 引入外部文件
<script type"text/javascript" src="JS文件"></script>
2. 存放在HTML的<head>或<body>中
<script type"text/javascript"> Js代碼內容 </script>
- HTML的head中
- HTML的body代碼塊底部(推薦)
3. 為什麼要放在<body>代碼塊底部?
- HTML代碼從上到下執行,先載入CSS,避免html出現無樣式狀態;
- 將JavaScript代碼塊放在<body>最後,可以讓網頁儘快的呈現給用戶,減少瀏覽者的等待時間,避免因為JS代碼塊阻塞網頁的呈現。
變數
需要註意的是:局部變數必須以 var 開頭申明,如果不寫 var 則為全局變數
<script type="text/javascript"> // 全局變數 name = 'nick'; function func(){ // 局部變數 var age = 18; // 全局變數 gender = "man" } </script>
運算符
1. 算術運算符
一元算術 | |
+ 一元加,數值不會產生影響 | 對非數值應用一元加運算時,會調用Number()轉型函數對這個值進行轉換 |
- 一元減,轉換為負數 | ~ |
++ 遞增1 | 通過Number()轉型為數字,再加1,再重新賦值給操作數值 |
-- 遞減1 | ~ |
二元算術 | |
+ 加法 | |
- 減法 | |
* 乘法 | |
/ 除法 | |
% 除法 |
1> 如果其中一個操作數是對象,則對象會轉換為原始值:日期對象通過toString()方法執行轉換,其他對象通過valueOf()方法執行轉換。如果結果還不是原始值,則再使用toString()方法轉換 2> 在進行了對象到原始值的轉換後,如果其中一個操作數是字元串的話,另一個操作數也會轉換成字元串,進行字元串拼接 3> 兩個操作數都將轉換成數字或NaN,進行加法操作二元運算過程
2. 比較運算符
=== 嚴格運算符 | 比較過程沒有任何類型轉換 |
!== 嚴格運算符 | ===的結果取反 |
== 相等運算符 | 如果兩個操作值不是同一類型,相等運算符會嘗試進行一些類型轉換,然後再進行比較 |
!= 不相等運算符 | ==的結果取反 |
> 大於運算符 | |
>= 大於等於運算符 | |
< 小於運算符 | |
<= 小於等於運算符 |
1> 如果兩個值類型不同則返回false 2> 如果兩個值類型相同,值相同,則返回true,否則返回false 3> 如果兩個值引用同一個對象,則返回true,否則,返回false console.log([] === []);//false console.log({} === {});//false var a = {}; b = a; console.log(a === b);//true嚴格運算符比較過程
對象類型和原始類型比較: 1> 對象類型會先使用valueOf()轉換成原始值,如果結果還不是原始值,則再使用toString()方法轉換,再進行比較(日期類只允許使用toString()方法轉換為字元串) 2> 在對象轉換為原始值之後,如果兩個操作數都是字元串,則進行字元串的比較 3> 在對象轉換為原始值之後,如果至少有一個操作數不是字元串,則兩個操作數都將通過Number()轉型函數轉換成數字進行數值比較 註:如果一個值是null,另一個值是undefined,則返回true; console.log(null == undefined);//true 如果一個值是null,另一個值是0,則返回tfalse; console.log(null == 0);//false 空字元串或空格字元串會轉成0 console.log(null == []);//false console.log(null == '');//false console.log([] == ' ');//false,相當於'' == ' ' console.log([] == '');//true,相當於'' == '' console.log(0 == '');//true相等運算符比較過程
數字和字元串比較: 1> 如果操作值是對象,則這個對象將先使用valueOf()轉換成原始值,如果結果還不是原始值,則再使用toString()方法轉換 2> 在對象轉換為原始值之後,如果兩個操作數都是字元串,則按照unicode字元的索引順序對兩個字元串進行比較 3> 在對象轉換為原始值之後,如果至少有一個操作數不是字元串,則兩個操作數都轉換成數字進行比較 console.log('B' > 'a');//false console.log('b' > 'a');//true console.log(9 > '2');//true大於小於運算符比較過程
3. 邏輯運算符
! 非(兩個!!表示Boolean()轉型函數) |
返回一個布爾值 |
&& 與 | 兩個操作都為true時返回true,否則返回false(返回值不一定是布爾值),可以多個連用(..&&..&&..) |
|| 或 | 兩個操作都是false時返回false,否則返回true(返回值不一定是布爾值),可以多個連用(..||..||..) |
//七個假值: console.log(!!undefined);//false console.log(!!null);//false console.log(!!0);//false console.log(!!-0);//false console.log(!!NaN);//false console.log(!!'');//false console.log(!!false);//false console.log(!!{});//true console.log(!![]);//true
1> 取代if語句 //前麵條件成立則運行後面操作 (a == b) && dosomething(); 2> 用於回調函數 //若沒有給參數a傳值,則a預設為undefined假值,所以不執行a()。 function fn(a){ a && a(); }&& 常用操作
1> 變數設置為預設值 //如果沒有向參數a傳入任何參數,則將該參數設置為空對象 function func(a){ a = a || {}; }|| 常用操作
數據類型
JavaScript 中的數據類型分為原始類型和對象類型:
- 原始類型
- 數字
- 字元串
- 布爾值
- 對象類型
- 數組
- “字典”
- ...
特殊值:
- null 表示一個空對象指針,常用來描述"空值";
- undefined 表示變數未定義。
1、數字(Number)
JavaScript中不區分整數值和浮點數值,JavaScript中所有數字均用浮點數值表示。
轉換:
- parseInt(..) 將某值轉換成數字,不成功則NaN
- parseFloat(..) 將某值轉換成浮點數,不成功則NaN
特殊值:
- NaN,非數字。可使用 isNaN(num) 來判斷。
- Infinity,無窮大。可使用 isFinite(num) 來判斷。
Number | 對數字的支持 |
Number.MAX_VALUE | 最大數值 |
Number.MIN_VALUE | 最小數值 |
Number.NaN | 特殊的非數字值 |
Number.NEGATIVE_INFINITY | 負無窮大 |
Number.POSITIVE_INFINITY | 正無窮大 |
Number.toExponential( ) | 用指數計數法格式化數字 |
Number.toFixed( ) | 採用定點計數法格式化數字 |
Number.toLocaleString( ) | 把數字轉換成本地格式的字元串 |
Number.toPrecision( ) | 格式化數字的有效位 |
Number.toString( ) | 將—個數字轉換成字元串 |
Number.valueOf( ) | 返回原始數值 |
2、字元串(String)
字元串是由字元組成的數組,但在JavaScript中字元串是不可變的:可以訪問字元串任意位置的文本,但是JavaScript並未提供修改已知字元串內容的方法。
String.length | 字元串的長度 |
String.trim() | 移除空白 |
String.trimLeft() | 移除左側空白 |
String.trimRight() | 移除右側空白 |
String.concat(value, ...) | 拼接 |
String.slice(start, end) | 切片 |
String.split( ) | 分割 |
String.search( ) | 從頭開始匹配,返回匹配成功的第一個位置(g無效) |
String.match( ) | 全局搜索,如果正則中有g表示找到全部,否則只找到第一個 |
String.replace( ) | 替換,正則中有g則替換所有,否則只替換第一個匹配項;
$數字:匹配的第n個組內容;
$&:當前匹配的內容;
$`:位於匹配子串左側的文本;
$':位於匹配子串右側的文本
$$:直接量$符號
|
String.charAt( ) | 返回字元串中的第n個字元 |
String.charCodeAt( ) | 返回字元串中的第n個字元的代碼 |
String.fromCharCode( ) | 從字元編碼創建—個字元串 |
String.indexOf( ) | 查找子字元串位置 |
String.lastIndexOf( ) | 查找子字元串位置 |
String.localeCompare( ) | 用本地特定的順序來比較兩個字元串 |
String.substr( ) | 抽取一個子串 |
String.substring( ) | 返回字元串的一個子串 |
String.toLocaleLowerCase( ) | 把字元串轉換小寫(針對地區,在不知道程式在哪個語言環境中運行時用) |
String.toLocaleUpperCase( ) | 將字元串轉換成大寫(針對地區) |
String.toLowerCase( ) | 小寫 |
String.toUpperCase( ) | 大寫 |
String.toString( ) | 返回原始字元串值 |
String.toString() | 返回原始字元串值 |
String.valueOf( ) | 返回原始字元串值 |
3、布爾類型(Boolean)
true(真)和false(假)
toString() | 返回Boolean的字元串值('true'或'false') |
toLocaleString() | 返回Boolean的字元串值('true'或'false') |
valueOf() | 返回Boolean的原始布爾值(true或false) |
4、數組(Array)
Array.length | 數組的大小 |
Array.push() | 尾部添加元素 |
Array.pop() | 刪除並返回數組的最後一個元素 |
Array.unshift() | 在數組頭部插入一個元素 |
Array.shift( ) | 在數組頭部移除一個元素 |
Array.slice( ) | 切片 |
Array.reverse( ) | 反轉 |
Array.join( ) | 將數組元素連接起來以構建一個字元串 |
Array.concat( ) | 拼接 |
Array.sort( ) | 排序 |
Array | 對數組的內部支持 |
Array.splice( start, deleteCount, value, ...) |
插入、刪除或替換數組的元素 obj.splice(n, 0 ,val) 指定位置插入元素
obj.splice(n, 1 ,val) 指定位置替換元素
obj.splice(n, 1 ) 指定位置刪除元素
|
Array.toLocaleString( ) | 把數組轉換成局部字元串 |
Array.toString( ) | 將數組轉換成一個字元串 |
5. Math
和其他對象不同,Math對象是一個靜態對象,而不是構造函數。實際上,Math只是一個由Javascript設置的對象命名空間,用於存儲數學函數
常量 Math.E 常量e,自然對數的底數。 Math.LN10 10的自然對數。 Math.LN2 2的自然對數。 Math.LOG10E 以10為底的e的對數。 Math.LOG2E 以2為底的e的對數。 Math.PI 常量figs/U03C0.gif。 Math.SQRT1_2 2的平方根除以1。 Math.SQRT2 2的平方根。 靜態函數 Math.abs( ) 計算絕對值。 Math.acos( ) 計算反餘弦值。 Math.asin( ) 計算反正弦值。 Math.atan( ) 計算反正切值。 Math.atan2( ) 計算從X軸到一個點的角度。 Math.ceil( ) 對一個數上舍入。 Math.cos( ) 計算餘弦值。 Math.exp( ) 計算e的指數。 Math.floor( ) 對一個數下舍人。 Math.log( ) 計算自然對數。 Math.max( ) 返回兩個數中較大的一個。 Math.min( ) 返回兩個數中較小的一個。 Math.pow( ) 計算xy。 Math.random( ) 計算一個隨機數。 Math.round( ) 舍入為最接近的整數。 Math.sin( ) 計算正弦值。 Math.sqrt( ) 計算平方根。 Math.tan( ) 計算正切值。Math 方法
語句
1、條件語句
JavaScript中支持兩個條件語句,分別是:if 和 switch。
if 語句:
//if語句 if(條件){ }else if(條件){ }else{ }
Switch 語句:
//switch語句 switch(name){ case 'nick': age = 18; break; case 'jenny': age = 21; break; default : age = 0; }
2、迴圈語句
JavaScript中支持三種迴圈語句,分別是:for、for in、while
for 迴圈:
var names = ["nick", "jenny"]; for(var i=0;i<names.length;i++){ console.log(i); //索引 console.log(names[i]); }
for in 迴圈:
var names = ["nick", "jenny"]; for(var index in names){ console.log(index); console.log(names[index]); }
while 迴圈:
while(條件){ // break; // continue; }