JavaScript是一門編程語言,瀏覽器內置了JavaScript語言的解釋器,因此在瀏覽器上按照JavaScript語言的規則編寫相應代碼之,瀏覽器能夠解釋並作出相應的處理。javascript
一、JavaScript代碼存在形式html
二、JavaScript代碼存放位置java
因爲Html代碼是從上到下執行,若是Head中的js代碼耗時嚴重,就會致使用戶長時間沒法看到頁面,若是放置在body代碼塊底部,那麼即便js代碼耗時嚴重,也不會影響用戶看到頁面效果,只是js實現特效慢而已。python
JavaScript中變量的聲明是一個很是容易出錯的點,局部變量必須一個 var 開頭,若是未使用var,則默認表示聲明的是全局變量。正則表達式
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<script
type
=
"text/javascript"
>
/
/
全局變量
name
=
'seven'
;
function func(){
/
/
局部變量
var age
=
18
;
/
/
全局變量
gender
=
"男"
}
<
/
script>
|
JavaScript中代碼註釋:編程
注意:此註釋僅在Script塊中生效。api
JavaScript 中的數據類型分爲原始類型和對象類型:數組
特別的,數字、布爾值、null、undefined、字符串是不可變。瀏覽器
一、數字(Number)閉包
JavaScript中不區分整數值和浮點數值,JavaScript中全部數字均用浮點數值表示。
轉換:
特殊值:
更多數值計算:
二、字符串(String)
字符串是由字符組成的數組,但在JavaScript中字符串是不可變的:能夠訪問字符串任意位置的文本,可是JavaScript並未提供修改已知字符串內容的方法。
常見功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
obj.length 長度
obj.trim() 移除空白
obj.trimLeft()
obj.trimRight)
obj.charAt(n) 返回字符串中的第n個字符
obj.concat(value, ...) 拼接
obj.indexOf(substring,start) 子序列位置
obj.lastIndexOf(substring,start) 子序列位置
obj.substring(
from
, to) 根據索引獲取子序列
obj.
slice
(start, end) 切片
obj.toLowerCase() 大寫
obj.toUpperCase() 小寫
obj.split(delimiter, limit) 分割
obj.search(regexp) 從頭開始匹配,返回匹配成功的第一個位置(g無效)
obj.match(regexp) 全局搜索,若是正則中有g表示找到所有,不然只找到第一個。
obj.replace(regexp, replacement) 替換,正則中有g則替換全部,不然只替換第一個匹配項,
$數字:匹配的第n個組內容;
$&:當前匹配的內容;
$`:位於匹配子串左側的文本;
$':位於匹配子串右側的文本
$$:直接量$符號
|
三、布爾類型(Boolean)
布爾類型僅包含真假,與Python不一樣的是其首字母小寫。
四、數組
JavaScript中的數組相似於Python中的列表
常見功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
obj.length 數組的大小
obj.push(ele) 尾部追加元素
obj.pop() 尾部獲取一個元素
obj.unshift(ele) 頭部插入元素
obj.shift() 頭部移除元素
obj.splice(start, deleteCount, value, ...) 插入、刪除或替換數組的元素
obj.splice(n,
0
,val) 指定位置插入元素
obj.splice(n,
1
,val) 指定位置替換元素
obj.splice(n,
1
) 指定位置刪除元素
obj.
slice
( ) 切片
obj.reverse( ) 反轉
obj.join(sep) 將數組元素鏈接起來以構建一個字符串
obj.concat(val,..) 鏈接數組
obj.sort( ) 對數組元素進行排序
|
一、序列化
二、轉義
三、eval
JavaScript中的eval是Python中eval和exec的合集,既能夠編譯代碼也能夠獲取返回值。
四、正則表達式
一、定義正則表達式
注:定義正則表達式也能夠 reg= new RegExp()
二、匹配
JavaScript中支持正則表達式,其主要提供了兩個功能:
三、字符串中相關方法
五、時間處理
JavaScript中提供了時間相關的操做,時間操做中分爲兩種時間:
更多操做參見:http://www.shouce.ren/api/javascript/main.html
一、條件語句
JavaScript中支持兩個中條件語句,分別是:if 和 switch
二、循環語句
JavaScript中支持三種循環語句,分別是:
三、異常處理
1
2
3
4
5
6
7
8
9
10
|
try
{
/
/
這段代碼從上往下運行,其中任何一個語句拋出異常該代碼塊就結束運行
}
catch (e) {
/
/
若是
try
代碼塊中拋出了異常,catch代碼塊中的代碼就會被執行。
/
/
e是一個局部變量,用來指向Error對象或者其餘拋出的對象
}
finally
{
/
/
不管
try
中代碼是否有異常拋出(甚至是
try
代碼塊中有
return
語句),
finally
代碼塊中始終會被執行。
}
|
注:主動跑出異常 throw Error('xxxx')
一、基本函數
JavaScript中函數基本上能夠分爲一下三類:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/
/
普通函數
function func(arg){
return
true;
}
/
/
匿名函數
var func
=
function(arg){
return
"tony"
;
}
/
/
自執行函數
(function(arg){
console.log(arg);
})(
'123'
)
|
注意:對於JavaScript中函數參數,實際參數的個數可能小於形式參數的個數,函數內的特殊值arguments中封裝了全部實際參數。
二、做用域
JavaScript中每一個函數都有本身的做用域,當出現函數嵌套時,就出現了做用域鏈。當內層函數使用變量時,會根據做用域鏈從內到外一層層的循環,若是不存在,則異常。
切記:全部的做用域在建立函數且未執行時候就已經存在。
1
2
3
4
5
6
7
8
9
10
11
|
function f2(){
var arg
=
111
;
function f3(){
console.log(arg);
}
return
f3;
}
ret
=
f2();
ret();
|
注:聲明提早,在JavaScript引擎「預編譯」時進行。
更多:http://www.cnblogs.com/wupeiqi/p/5649402.html
三、閉包
閉包是指能夠包含自由(未綁定到特定對象)變量的代碼塊。
「閉包」,是指擁有多個變量和綁定了這些變量的環境的表達式(一般是一個函數),於是這些變量也是該表達式的一部分。
閉包是個函數,而它「記住了周圍發生了什麼」。表現爲由「一個函數」體中定義了「另個函數」
因爲做用域鏈只能從內向外找,默認外部沒法獲取函數內部變量。閉包,在外部獲取函數內部的變量。
1
2
3
4
5
6
7
8
9
10
|
function f2(){
var arg
=
[
11
,
22
];
function f3(){
return
arg;
}
return
f3;
}
ret
=
f2();
ret();
|
四、面向對象
1
2
3
4
5
6
7
8
9
10
11
|
function Foo (name,age) {
this.Name
=
name;
this.Age
=
age;
this.Func
=
function(arg){
return
this.Name
+
arg;
}
}
var obj
=
new Foo(
'alex'
,
18
);
var ret
=
obj.Func(
"sb"
);
console.log(ret);
|
對於上述代碼須要注意:
上述代碼中每一個對象中均保存了一個相同的Func函數,從而浪費內存。使用原型和能夠解決該問題:
1
2
3
4
5
6
7
8
9
10
11
12
|
function Foo (name,age) {
this.Name
=
name;
this.Age
=
age;
}
Foo.prototype
=
{
GetInfo: function(){
return
this.Name
+
this.Age
},
Func : function(arg){
return
this.Name
+
arg;
}
}
|