一匠襟、嚴(yán)格模式(了解)
我們都知道 js 是一個(gè)相對(duì)不很?chē)?yán)謹(jǐn)?shù)恼Z(yǔ)言,而且開(kāi)發(fā)的時(shí)候兽狭,一些代碼也不是很?chē)?yán)格要求环揽,而嚴(yán)格模式就是對(duì)開(kāi)發(fā)的時(shí)候?qū)懙囊恍﹥?nèi)容做了要求
開(kāi)啟嚴(yán)格模式
想開(kāi)啟嚴(yán)格模式,直接在代碼最開(kāi)始的位置寫(xiě)上字符串 use strict
<script>
? ? 'use strtic'
? ? // 下面代碼書(shū)寫(xiě)就要按照嚴(yán)格模式來(lái)書(shū)寫(xiě)
</script>
嚴(yán)格模式的規(guī)則
聲明變量必須有 var 關(guān)鍵字
'use strtic'
varnum=100
num2=200// 這個(gè)就會(huì)報(bào)錯(cuò)
之前了解過(guò)吨拗,在聲明變量的時(shí)候满哪,如果沒(méi)有 var 關(guān)鍵字,那么按照作用域的規(guī)則會(huì)自動(dòng)定義成全局變量
嚴(yán)格模式下不可以劝篷,會(huì)報(bào)錯(cuò)
函數(shù)的行參不可以重復(fù)
'use strtic'
functionfn(p1,p1) {}// 直接就會(huì)報(bào)錯(cuò)
在非嚴(yán)格模式下哨鸭,函數(shù)兩個(gè)行參一樣,是不會(huì)報(bào)錯(cuò)的娇妓,只不過(guò)就是相當(dāng)于在函數(shù)內(nèi)部只有一個(gè)變量了
但是在嚴(yán)格模式下會(huì)報(bào)錯(cuò)
聲明式函數(shù)調(diào)用的時(shí)候函數(shù)內(nèi)部沒(méi)有 this
'use strtic'
functionfn() {
console.log(this)// undefined
}
fn()
本身像鸡,全局聲明式函數(shù)在調(diào)用的時(shí)候,函數(shù)內(nèi)部的 this 是指向 window 的
在嚴(yán)格模式下哈恰,是沒(méi)有 this 的
二只估、ES5 中常見(jiàn)的數(shù)組常用方法
之前我們講過(guò)的數(shù)組常用方法都是 ES3 的方法
今天來(lái)說(shuō)一些 ES5 中的方法
二-1、indexOf
indexOf 用來(lái)找到數(shù)組中某一項(xiàng)的索引
語(yǔ)法: indexOf(你要找的數(shù)組中的項(xiàng))
vararr=[1,2,3,4,5]
// 使用 indexOf 超找數(shù)組中的某一項(xiàng)
varindex=arr.indexOf(3)
console.log(index)// 2
我們要找的是數(shù)組中值為 3 的那一項(xiàng)
返回的就是值為 3 的那一項(xiàng)在該數(shù)組中的索引
如果你要找的內(nèi)容在數(shù)組中沒(méi)有蕊蝗,那么就會(huì)返回 -1
vararr=[1,2,3,4,5]
// 使用 indexOf 超找數(shù)組中的某一項(xiàng)
varindex=arr.indexOf(10)
console.log(index)// -1
你要找的值在數(shù)組中不存在仅乓,那么就會(huì)返回 -1
二-2、forEach
和 for 循環(huán)一個(gè)作用蓬戚,就是用來(lái)遍歷數(shù)組的
語(yǔ)法:arr.forEach(function (item, index, arr) {})
vararr=[1,2,3]
// 使用 forEach 遍歷數(shù)組
arr.forEach(function(item,index,arr) {
// item 就是數(shù)組中的每一項(xiàng)
// index 就是數(shù)組的索引
// arr 就是原始數(shù)組
console.log('數(shù)組的第 '+index+' 項(xiàng)的值是 '+item+'夸楣,原始數(shù)組是',arr)
})
forEach() 的時(shí)候傳遞的那個(gè)函數(shù),會(huì)根據(jù)數(shù)組的長(zhǎng)度執(zhí)行
數(shù)組的長(zhǎng)度是多少,這個(gè)函數(shù)就會(huì)執(zhí)行多少回
map
和 forEach 類(lèi)似豫喧,只不過(guò)可以對(duì)數(shù)組中的每一項(xiàng)進(jìn)行操作石洗,返回一個(gè)新的數(shù)組
vararr=[1,2,3]
三、使用 map 遍歷數(shù)組
varnewArr=arr.map(function(item,index,arr) {
// item 就是數(shù)組中的每一項(xiàng)
// index 就是數(shù)組的索引
// arr 就是原始數(shù)組
returnitem+10
})
console.log(newArr)// [11, 12, 13]
filter
和 map 的使用方式類(lèi)似紧显,按照我們的條件來(lái)篩選數(shù)組
把原始數(shù)組中滿足條件的篩選出來(lái)讲衫,組成一個(gè)新的數(shù)組返回
vararr=[1,2,3]
四、使用 filter 過(guò)濾數(shù)組
varnewArr=arr.filter(function(item,index,arr) {
// item 就是數(shù)組中的每一項(xiàng)
// index 就是數(shù)組的索引
// arr 就是原始數(shù)組
returnitem>1
})
console.log(newArr)// [2, 3]
我們?cè)O(shè)置的條件就是 > 1
返回的新數(shù)組就會(huì)是原始數(shù)組中所有 > 1 的項(xiàng)
五孵班、創(chuàng)建字符串(了解)
我們創(chuàng)建字符串也分為兩種方法 字面量 和 構(gòu)造函數(shù)
字面量:
varstr='hello'
構(gòu)造函數(shù)創(chuàng)建
varstr=newString('hello')
五-1字符串的常用方法
我們操作字符串涉兽,也有一堆的方法來(lái)幫助我們操作
字符串和數(shù)組有一個(gè)一樣的地方,也是按照索引來(lái)排列的
charAt
charAt(索引)? 是找到字符串中指定索引位置的內(nèi)容返回
varstr='Jack'
// 使用 charAt 找到字符串中的某一個(gè)內(nèi)容
varindex=str.charAt(2)
console.log(index)// c
因?yàn)樽址彩前凑账饕M(jìn)行排列的篙程,也是同樣從 0 開(kāi)始
所以索引 2 的位置就是 c
如果沒(méi)有對(duì)應(yīng)的索引枷畏,那么就會(huì)返回 空字符串
varstr='Jack'
// 使用 charAt 找到字符串中的某一個(gè)內(nèi)容
varindex=str.charAt(10)
console.log(index)// ''
這個(gè)字符串根本沒(méi)有索引 10 的位置
所以就會(huì)返回一個(gè)空字符串 ''
charCodeAt
charCodeAt(索引) 就是返回對(duì)應(yīng)索引位置的 unicode 編碼
varstr='Jack'
// 使用 charAt 找到字符串中的某一個(gè)內(nèi)容
varindex=str.charCodeAt(0)
console.log(index)// 74
因?yàn)?J 在 unicode 對(duì)照表里面存儲(chǔ)的是 74,所以就會(huì)返回 74
indexOf
indexOf 就是按照字符找到對(duì)應(yīng)的索引
varstr='Jack'
// 使用 indexOf 找到對(duì)應(yīng)的索引
varindex=str.indexOf('J')
console.log(index)// 0
因?yàn)樽址?J 在字符串 Jack 中的索引位置是 0
所以會(huì)返回 0
substring
substring 是用來(lái)截取字符串使用的
語(yǔ)法: substring(從哪個(gè)索引開(kāi)始虱饿,到哪個(gè)索引截止)拥诡,包含開(kāi)始索引,不包含結(jié)束索引
varstr='hello'
// ? ? ? ? 01234
// 使用 substring 截取字符串
varnewStr=str.substring(1,3)
console.log(newStr)// el
從索引 1 開(kāi)始氮发,到索引 3 截止渴肉,包含前面的索引不包含后面的索引
所以返回的是 el
//substr
substr 也是用來(lái)截取字符串的
語(yǔ)法:substr(從哪個(gè)索引開(kāi)始,截取多少個(gè))
varstr='hello'
// ? ? ? ? 01234
// 使用 substr 截取字符串
varnewStr=str.substr(1,3)
console.log(newStr)// ell
這個(gè)方法和 substring 不一樣的是爽冕,第二個(gè)參數(shù)是截取多少個(gè)
從索引 1 開(kāi)始仇祭,截取 3 個(gè),所以得到的是 ell
toLowerCase 和 toUpperCase
這兩個(gè)方法分別使用用來(lái)給字符串轉(zhuǎn)成 小寫(xiě)字母 和 大寫(xiě)字母 的
varstr=hello
// 使用 toUpperCase 轉(zhuǎn)換成大寫(xiě)
varupper=str.toUpperCase()
console.log(upper)// HELLO
// 使用 toLowerCase 轉(zhuǎn)換成小寫(xiě)
varlower=upper.toLowerCase()
console.log(lower)// hello