javascript是弱類型語言。
1.結合方式
1.在head標籤內直接用
<script type="text/javascript">
</script>
2.新建一個js文件 xx.js 然後引用
<script type="text/javascript" src="hello.js"></script>
2.數據類型
js數據類型分爲原始數據類型和對象數據類型。
js的原始類型 5種
1 number 數字 不分整型或浮點型
2 string 字符串
3 boolean 布爾
4 null 一般人爲來賦值爲null. 對象數據類型的佔位符.
5 undefined(未定義) null的衍生值. 通常是系統自動賦值.當我們創建一個變量,並且沒有初始化.
一些語法:
1. 聲明變量, 變量的類型是隨時可以變化的,也就是說當變量被賦什麼值時,就是什麼類型。
2. 聲明變量時,也可以不加var。 加var聲明,作用範圍在代碼塊中.不加var聲明,作用範圍爲全局
3. js中每行語句的結束使用 ";" 號來表示. 也可以不使用";",但一般都加上。
3.語句
跟java中一樣。
4.運算符
1.一元運算符
+ - 是number類型的運算符,當它加在其他數據類型進行運算時,會自動將其他數據類型轉化爲number類型
2.boolean運算符
number => boolean 除了+0,-0,NaN 其他都是true.
string => boolean 字符串不爲空,那麼其他都是true.
null => boolean false
undefined => boolean false
Object => boolean true
3.邏輯運算符
邏輯 AND 運算的運算數可以是任何類型的,不止是 Boolean 值。
如果某個運算數不是原始的 Boolean 型值,邏輯 AND 運算並不一定返回 Boolean 值:
邏輯 AND 運算符(&&)
• 如果一個運算數是對象,另一個是 Boolean 值,返回該對象。
• 如果兩個運算數都是對象,返回第二個對象。
• 如果某個運算數是 null,返回 null。
• 如果某個運算數是 NaN,返回 NaN。
• 如果某個運算數是 undefined,返回undefined。
• //1 false&&o ==> false
• //2 true&&o ==> o ==> true
• //3 o&&true ==> true
• //4 o&&false ==> false
• //5 o1&&o2 ==>
• //6 null&&true == > null
• //7 NaN && true == > NaN
• //8 NaN&&null ==> NaN
• //9 null&&NaN ==> null
•
• //10 undefined&&true ==> undefined
• //11 false&&undefined == > false
邏輯 OR 運算符(||)
與邏輯 AND 運算符相似,如果某個運算數不是 Boolean 值,邏輯 OR 運算並不一定返回 Boolean 值:
• 如果一個運算數是對象,並且該對象左邊的運算數值均爲 false,則返回該對象。
• 如果兩個運算數都是對象,返回第一個對象。
• 如果最後一個運算數是 null,並且其他運算數值均爲 false,則返回 null。
• 如果最後一個運算數是 NaN,並且其他運算數值均爲 false,則返回 NaN。
• 如果某個運算數是 undefined,返回undefined。
• //1 false||o ==> o
• //2 true||o ==>true
• //3 o||false == > o
• //4 o||true == > o
• //5 o1||o2 ==>o1
• //6 null||false == > false
• //7 null||true ==> true
• //8 null||undefined ==>undefined
• //9 undefined||null ==>null
4.數學運算符
+ :使用+法時, 如果相加的值包含字符串,會自動轉換爲字符串類型
- * / :其他數學運算符中,字符串會自動轉換爲數字
5.關係運算符 > <
1.兩個字符串的比較:字符串的比較規則=>asc碼的比對
alert("aa">"aaa"); //結果爲false
2.字符串跟數字比較:將字符串轉換爲數字後進行比較
alert("2">1);// "2" 轉換爲 數字2 結果爲true
6.等性運算符
== != :
執行類型轉換的規則如下:
• 如果一個運算數是 Boolean 值,在檢查相等性之前,把它轉換成數字值。false 轉換成 0,true 爲 1。
• 如果一個運算數是字符串,另一個是數字,在檢查相等性之前,要嘗試把字符串轉換成數字。
• 如果一個運算數是對象,另一個是字符串,在檢查相等性之前,要嘗試把對象轉換成字符串。
• 如果一個運算數是對象,另一個是數字,在檢查相等性之前,要嘗試把對象轉換成數字。
在比較時,該運算符還遵守下列規則:
• 值 null 和 undefined 相等。
• 在檢查相等性時,不能把 null 和 undefined 轉換成其他值。
• 如果某個運算數是 NaN,等號將返回 false,非等號將返回 true。
• 如果兩個運算數都是對象,那麼比較的是它們的引用值。如果兩個運算數指向同一對象,那麼等號返回 true,否則兩個運算數不等。
=== :
全等於運算符不僅比較數值,還比較類型。類型不同的變量比較爲false.
7.三元運算符跟java中一樣。
8.賦值運算符跟java中一樣。
5.function對象
1.三種創建方法: (1)function fun1(){};
(2)var fun2 = function(a,b){}
(3)var fun3 = new Function("alert('hello3');");
2.js中的函數在調用時,只看函數名稱.不看參數.也就是說可以給一個固定參數的的函數傳任意個參數。
3.函數裏面有一個arguments屬性,是一個數組,存儲的是傳入該函數的實參數。
4.ECMAScript 定義的屬性 length 聲明瞭函數期望的參數個數
Function 對象也有與所有對象共享的 valueOf() 方法和 toString() 方法。這兩個方法返回的都是函數的源代碼,在調試時尤其有用。
Grobal對象
Grobal對象是全局對象,所以在調用其方法是不需要直接寫函數名即可。
方法:
1.encodeURI/decodeURI 可以將中文Url編碼 例如: 湯姆=>%E6%B1%A4%E5%A7%86
2.encodeURIComponent/decodeURIComponent 轉換的範圍更大,
包括一些url中的字符. & : /
3.parseInt 轉換成整數 。 從左到右依次轉換.轉換到遇到不能轉換的字符爲止
parseFloat 轉換成浮點數 。從左到右依次轉換,遇到字符停止或者遇到第二個小數點停止。
4.isNaN() 判斷一個值是否是NaN
5.eval() 解析運行方法
三大包裝類
js中5個原始類型,有3個包裝類. => Number String Boolean
js中 有僞對象的概念.原始類型可以直接調用 對應包裝類型的屬性或函數.
Math對象
主要參考手冊使用。
Array對象
1.創建
var arr1 = [1,2,3,4];
var arr2 = new Array(1,2,3,4);
var arr3 = new Array(4); // 如果調用數組構造,只傳遞一個參數,並且參數的值是數字.那麼該值將作爲數組初始化長度
2.對象的方法
pop 彈棧 將0索引 的變量移除並返回
push 壓棧 將一個值放入數組的0索引位置
reverse 將數組反轉 => 會對數組本身順序進行調整
sort 排序 => 默認會按照字符串比較的方式排序.而不是數字.
sort可以傳入比較器,根據比較器的比較方法進行比較。 arr1.sort(comparator);
比較器:
比較器需要傳入兩個參數,他們是數組進行比較時,會傳入兩個值進行比較,
大於0 表示 a>b , 等於0 相等 ,小於0 a<b
function comparator(a,b){
return a-b;
};
3.注意:
1 數組中元素的類型可以任意,也就是說一個數組中可以存儲任意類型的數據
2 數組的長度是可以隨時變化的.
Date對象
參考手冊上使用。
RegExp對象
1 創建
參數1: 正則表達式
參數2: 匹配模式. g: 全局 i: 忽略大小寫
(1)var reg1 = new RegExp("e","gi");
(2)var reg2 = /e/gi;
2.方法
test 方法 : 校驗 字符串是否能與正則表達式匹配 返回值爲boolean類型。
3.String 與正則結合的 4個方法
var str = "hello world";
//split 切割
alert(str.split(/o/g));
//replace 替換
alert(str.replace(/l/g, "a"));
//match 匹配並獲得 , 找不到就返回null
alert(str.match(/or/g));//or
//search 查找索引 返回第一次出現該值的位置。
alert(str.search(/l/g));//2
bom 之 window對象
方法:
1. open方法 => 打開一個新的窗口
參數1: 打開的url
參數2: 窗口名稱=> name屬性
參數3: 窗口的特徵=> 長寬(其他屬性未必好使)...
參數4: 是否將新窗口的地址加入到瀏覽器歷史記錄中
返回值: 返回一個window對象. 新打開的窗口的window對象
window.open(url, windowName, windowFeatures, optionalArg4)
2.close 方法 關閉當前窗口。
3.定時器方法1
setInterval 設置定時器
clearInterval 清除定時器
//-----------------------------------------------
參數1: 可以是一段string, 內容是js代碼 也可以接受一個函數類型的對象
參數2: 毫秒單位的時間
返回值: 當前開啓的定時器id
功能: 每個參數2毫秒,執行參數1代碼.
window.setInterval("alert('abc');", 2000)
window.setInterval(fun1, 2000) //fun1是一個函數
//-----------------------------------------------
window.clearInterval(id);
定時器方法2
setTimeout 設置定時器
clearTimeout 清除定時器
//-----------------------------------------------
參數1: 可以是一段string, 內容是js代碼 ,也可以接受一個函數類型的對象
參數2: 毫秒單位的時間
返回值: 當前開啓的定時器id
功能:參數2毫秒後,執行參數1代碼(只執行一次).
var id = window.setTimeout("alert('abc');", 2000);
//-----------------------------------------------
window.clearTimeout(id);
bom 之 history對象
history.back() - 與在瀏覽器點擊後退按鈕相同
history.forward() - 與在瀏覽器中點擊按鈕向前相同
history.go(num) 方法可加載歷史列表中的某個具體的頁面。
num=-1,0或者1 ,分別表示後退,本頁面和前進。
bom 之 location對象
assign() 加載新的文檔。
reload() 重新加載當前文檔。
replace() 用新的文檔替換當前文檔。