Js的使用方式:html
寫在標籤中的js代碼數組
寫在頁面中的js代碼app
引入外部的js代碼函數
注意:1.若是<script></script>標籤設置了src屬性,則在雙標籤中寫的js代碼無效測試
二、一般使用JS時,會選擇內部JS或外部JShtm
語句:對象
JS代碼是以行爲單位,一行一行執行。索引
通常狀況下,一行一條語句。ip
每句語句後面最好加上分號,若是一行寫多條語句(不建議),則每條語句後面必須加分號。字符串
若是是表達式,不須要加分號,若是加了JavaScript引擎會把它當作語句編譯。
註釋:
單行註釋: // 註釋內容
多行註釋: /* 註釋內容 */
Html風格:<!-- html的註釋-- >
變量的聲明
JavaScript 是一種弱類型語言,在聲明變量時不須要指明數據類型,直接用 var 修飾符進行聲明。
兩種方式:
一、先聲明,後賦值
二、聲明並賦值
變量的注意點
1)若只聲明而沒有賦值,則該變量的值爲 undefined。
2)變量要有定義才能使用,若變量未聲明就使用,JavaScript 會報錯,告訴你變量未定義
3)能夠在同一條 var 命令中聲明多個變量。
4)若使用 var 從新聲明一個已經存在的變量,是無效的。
5)若使用 var 從新聲明一個已經存在的變量且賦值,則會覆蓋掉前面的值
6)JavaScript 是一種動態類型、弱類型語言,也就是說,變量的類型沒有限制,能夠賦予各類類型的值。
7)聲明變量時,能夠不加var修飾符,此時變量爲全局變量(不建議)
變量提高
JavaScript 引擎的工做方式是,先解析代碼,獲取全部被聲明的變量,而後再一行一行地運行。
JS是弱類型語言,變量沒有類型,但數據有類型。
JavaScript 中有 6 種數據類型。
其中有五種簡單的數據類型:
Undefined、Null、布爾、數值和字符串。
一種複雜數據類型 Object。
數 值(Number): 整數和小數(好比 1 和 3.14)
字符串(String): 字符組成的文本(好比"Hello World")
布爾值(Boolean):true(真)和 false(假)兩個特定值
Undefined: 表示「未定義」或不存在,即此處目前沒有任何值
Null: 表示空缺,即此處應該有一個值,但目前爲空
對象(object)(引用) : 各類值組成的集合
1)、對象(object){name:"zhangsan",age:"18"}
2)、數組(array)[1,2,3]
3)、函數(function)function test() {}
一、typeof 操做符
typeof 操做符是用來檢測數據類型。
說明:一、typeof null 返回的是 object 字符串
二、函數不是數據類型,可是也可使用 typeof 操做符返回字符串。
typeof 操做符能夠操做變量也能夠操做字面量。
注意:函數在 JavaScript 中是對象,不是數據類型,因此使用 typeof 區分 function 和object 是有必要的
這形成的結果,就是全部的變量的聲明語句,都會被提高到代碼的頭部,這就叫作變量提高。
注意:變量提高只對 var 命令聲明的變量有效,若是一個變量不是用 var 命令聲明的,就會發生變量提高。
undefined
undefined 類型的值是 undefined。
undefined 是一個表示"無"的原始值,表示值不存在。
常見的undefined的狀況:
一、當一個變量只聲明而未賦值時
二、當一個函數須要形參,調用時未傳遞形參,此時參數爲undefined
三、當一個函數沒有返回值,調用方式時去接收,會返回undefined
null
null 類型是隻有一個值的數據類型,即特殊的值 null。它表示空值,即該處的值如今爲空,
它表示一個空對象引用。
使用 Null 類型值時注意如下幾點:
1)使用 typeof 操做符測試 null 返回 object 字符串。
2)undefined 派生自 null,因此等值比較返回值是 true。因此,未初始化的變量和賦值爲null 的變量相等。
數值型
數值型包含兩種數值:整型和浮點型。
1)全部數字(整型和浮點型)都是以 64 位浮點數形式儲存。因此,JS 中 1 與 1.0 相等,並且 1 加上 1.0 獲得的仍是一個整數。浮點數最高精度是 17 位小數,因爲浮點數運算時可能不精確,儘可能不要使用浮點數作判斷。
2)在存儲數值型數據時自動將能夠轉換爲整型的浮點數值轉爲整型。
3)對於過大或太小的數值,可使用科學計數法來表示
4)Infinity、-Infinity
超過了表數範圍,出現 Infinity(正無窮)或者-Infinity(負無窮)
isFinite()函數能夠肯定是否超出範圍:
true:沒有超出;false:超出了。
NaN
表示非數值(Not a Number),是一個特殊的值。
如:將字符串解析成數字出錯的場合。
注意:
NaN 不等於任何值,包括它自己,由於它不是一個值
NaN 與任何數(包括它本身)的運算,獲得的都是 NaN。
isNaN()能夠用來判斷一個值是否爲 NaN
true:不是數字;false:是數字
字符串
使用 ' ' 或 " "引發來,如:'sxt',"good"。
使用加號’+’進行字符串的拼接,如:console.log('hello' + ' everybody');
對象
對象是一組數據和功能的集合。
typeof window // "object"
typeof {} // "object"
typeof [] // "object"
typeof null // "object"
說明:
{}:表示使用對象字面量方式定義的對象。空的大括號表示定義包含默認屬性和方法的對象。
instanceof 運算符
typeof 操做符對數組(array)和對象(object)的顯示結果都是 object,那麼能夠利用
instanceof 運算符,它可用於判斷一個變量是否某個對象的實例。
parseInt()和 parseFloat()兩個全局轉換函數。
前者把值轉換成整數,後者把值轉換成浮點數。
只有對 String 類型調用這些方法,這兩個函數才能正確運行;
對其餘類型返回的都是 NaN(Not a Number)。
parseInt()
會從下標0開始找,若是不是有效數字,返回NaN;若是是,則繼續日後找,直到不是有效數字位置
parseInt()方法還有基模式,能夠把二進制、八進制、十六進制或其餘任何進制的字符串轉換成整數。基是由 parseInt()方法的第二個參數指定的
若是十進制數包含前導 0,那麼最好採用基數 10,這樣纔不會意外地獲得八進制的值
parseFloat()方法
與 parseInt()方法的處理方式類似,從位置 0 開始查看每一個字符,直到找到第一個非有效的字符爲止,而後把該字 符以前的字符串轉換成數字。
不過,對於這個方法來講,第一個出現的小數點是有效字符。
若是有兩個小數點,第二個小數點將被看做無效的,parseFloat()方法會把這個小數點以前的字符串轉換成數字。
顯式轉換
toString()函數將內容轉換爲字符串形式
toFixed()函數將根據小數點後指定位數將數字轉爲字符串,四捨五入
注:不能對null和undefined使用
強制轉換
JS 爲 Number、Boolean、String 對象提供了構造方法,用於強制轉換其餘類型的數據。
此時操做的是整個數據,而不是部分
String()是最簡單的,由於它可把任何值轉換成字符串。
String()和toString()的區別,在於前者能夠操做null和undefinded
數組的建立
var arr=[值 1,值 2,值 3]; //隱式建立
var arr=new Array(值 1,值 2,值 3); //直接實例化
var array=new Array(size); //建立數組並指定長度
基本操做
一、數組的長度能夠經過 length 屬性來獲取,並能夠任意更改
二、數組中的每個元素均可以被訪問和修改,甚至是不存在的元素,無所謂越界
數組的遍歷
一、for(var i=0; i < 數組.length; i++) {}
二、for(var 下標名 in 數組) {}
三、數組.forEach(function(元素,下標){});
瞭解:
若是下標:
1.爲非負整數(包括整數字符串):自動從 0 開始,不存在添加 undefined
2.爲負數、小數、非數字符串:這些內容不計算在長度內,當成"屬性"處理,至關於自定義屬性。
數組很是靈活,使用數組元素
1.下標: 非負整數(包括整數字符串):
數組.下標
數組[下標]
2.下標:負數、小數、非數字字符串:
數組[屬性]
* for -- > 不遍歷屬性
* foreach -- >不遍歷屬性和索引中的 undefined
* for in -- >不遍歷索引中的 undefined
數組中提供的經常使用方法
push 添加元素到最後
unshift 添加元素到最前
pop 刪除最後一項
shift 刪除第一項
reverse 數組翻轉
join 數組轉成字符串
indexOf 數組元素索引
slice 截取(切片)數組,原數組不發生變化
splice 剪接數組,原數組變化,能夠實現先後刪除效果
concat 數組合並
1. 函數的定義
有三種函數定義的方式:函數聲明語句、函數定義表達式、Function 構造函數
函數聲明語句
function 函數名([參數列表]) {}
調用:函數名([參數列表]);
函數定義表達式
var 變量名/函數名 = function([參數列表]) {}
調用:變量名/函數名([參數列表]);
Function 構造函數
var 變量名 = new Function("參數1","參數2","最後一個參數爲是函數體");
調用:變量名/函數名([參數列表]);
注意:
一、js 中的函數沒有重載,同名的函數,會被後面的函數覆蓋。
二、js 中容許有不定數目的參數
函數的參數
實參能夠省略,那麼對應形參爲 undefined
若函數形參同名(通常不會這麼幹):在使用時以最後一個值爲準。
能夠給參數默認值:當參數爲特殊值時,能夠賦予默認值。
參數爲值傳遞,傳遞副本 ;引用傳遞時傳遞地址,操做的是同一個對象。
函數的調用
經常使用調用方式:函數名([實參]);
存在返回值能夠變量接收,若接收無返回值函數則爲 undefined
一、函數調用模式
二、方法調用模式
三、間接調用模式
call()和 apply()方法能夠用來間接地調用函數。
任何函數能夠做爲任何對象的方法來調用,哪怕這個函數不是那個對象的方法。
兩個方法均可以指定調用的實參。
call()方法使用它自有的實參列表做爲函數的實參,apply()方法則要求以數組的形式傳入參數
匿名函數當即調用
(1)匿名函數:function ([參數]){}
(2)調用:(function ([形參]) {})([實參]);
在函數只被使用一次的狀況下可使用這種方式,簡便省事
return 語句
做用:在沒有返回值的方法中,用來結束方法。
有返回值的方法中,一個是用來結束方法,一個是將值帶給調用者。