嚴格模式
嚴格模式的目的
- 消除Javascript語法的一些不合理舔庶、不嚴謹之處,減少一些怪異行為;
- 消除代碼運行的一些不安全之處闯传,保證代碼運行的安全峰髓;
- 提高編譯器效率亥鬓,增加運行速度完沪;
- 為未來新版本的Javascript做好鋪墊。
進入"嚴格模式"的標(biāo)志
"use strict";
如何調(diào)用
- 將"use strict"放在腳本文件的第一行嵌戈,則整個腳本都將以"嚴格模式"運行
- 將"use strict"放在函數(shù)體的第一行丽焊,則整個函數(shù)以"嚴格模式"運行。
語法和行為改變
- 全局變量顯式聲明
- 禁止使用with語句
'use strict';
var obj={
a:1,
b:2,
c:3
}
with(obj){
alert(a);
alert(b);
alert(c);
}
- 禁止this關(guān)鍵字指向全局對象
'use strict';
function fn(){
alert(this);//window--->undefined
}
fn();
- 對象不能有重名的屬性
- 函數(shù)不能有重名的參數(shù)
- 禁止八進制表示法
- 不允許對arguments賦值
- 禁止使用arguments.callee
- 不允許在非函數(shù)的代碼塊內(nèi)聲明函數(shù)
'use strict';
if(true){
function fn(){
alert(123);
}
}
fn();//fn is not defined
ES5新增數(shù)組操作方法(ECMAscript3 ECMAscript5 ECMAscript6)
- 位置方法----indexOf()
lastIndexOf()返回要查找的項在數(shù)組中的索引位置咕别,沒找到的情況下返回-1。(兩個參數(shù):要查找的項和(可選的)表示查找起點位置的索引)
indexOf() 方法從數(shù)組的開頭開始向后查找写穴。
lastIndexOf() 方法則從數(shù)組的末尾開始向前查找惰拱。
迭代方法(不會改變原數(shù)組)
- 迭代是重復(fù)反饋過程的活動,其目的通常是為了逼近所需目標(biāo)或結(jié)果啊送。每一次對過程的重 復(fù)稱為一次“迭代”偿短,而每一次迭代得到的結(jié)果會作為下一次迭代的初始值。
- 兩個參數(shù):
- 第一個參數(shù):要在每一項上運行的函數(shù)
此函數(shù)會接收三個參數(shù):數(shù)組項的值馋没、該項在數(shù)組中的位置昔逗、數(shù)組對象本身。
- 第二個參數(shù):(可選的)運行該函數(shù)的作用域?qū)ο螅ㄓ绊?this 的值)篷朵。
- every()
對數(shù)組中的每一項運行給定函數(shù)勾怒,如果該函數(shù)對每一項都返回 true ,則返回 true 声旺。
var arr=[1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9];
arr.every(function(){
alert(this);//hehe
},'hehe');
console.log(arr.every(function(value,index,array){//true
return value>0;
}));
- some()
對數(shù)組中的每一項運行給定函數(shù)笔链,如果該函數(shù)對任意一項返回 true ,則返回 true 腮猖。
console.log(arr.some(function(value,index,array){//true
return value>6;
}))
- filter()
對數(shù)組中的每一項運行給定函數(shù)鉴扫,返回該函數(shù)結(jié)果為 true 的項組成的數(shù)組。
console.log(
arr.filter(function(value,index,array){
return value>5;//[6, 7, 8, 9]
})
);
var arr=[1,2,3,4,5,6,7,8,9,3,3,3];
console.log(
arr.filter(function(value,index,array){
//indexOf(value):從前向后查找的value的索引
//index:默認的數(shù)組中的值的索引澈缺。
return array.indexOf(value)==index;
console.log(value+'---'+index+'---'+array);
})
);
- map()
對數(shù)組中的每一項運行給定函數(shù)坪创,返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組炕婶。
//編寫函數(shù)map(arr) 把數(shù)組中的每一位數(shù)字都增加30%
var arr=[100,200,300,400,500,200,300,400,500];
var arr1=(arr.map(function(value,index,array){
//return value*1.3;
//return value>100;// [false, true, true, true, true]
return array.indexOf(value)==index;
}));
alert(arr1);
返回就是數(shù)組,不考慮true或者false莱预;
- forEach() :對數(shù)組中的每一項運行給定函數(shù)柠掂。這個方法沒有返回值。
var arr=[1,2,3,4,5,6,7,8,9];
arr.forEach(alert);
arr.forEach(console.log);
var a=1,b=2,c=3;
console.log(a,b,c);
alert(a,b,c);
arr.forEach(function(value,index,array){
console.log(value,index,array);
})
函數(shù):箭頭函數(shù)
var arr=[1,2,3,4,5,6,7,8,9];
arr.forEach((value,index,array)=>{
console.log(value,index,array);
})
function sum(a,b){
return a+b;
}
var sum=(a,b)=>a+b;
alert(sum(3,4));
==注意:以上方法都不會修改數(shù)組中的包含的值锁施。==
- 歸并方法---- reduce() reduceRight()
- 這兩個方法都會迭代數(shù)組的所有項陪踩,然后構(gòu)建一個最終返回的值。
reduce() 方法從數(shù)組的第一項開始悉抵,逐個遍歷到最后肩狂。
reduceRight() 方法從數(shù)組的最后一項開始,向前遍歷到第一項姥饰。
兩個參數(shù):每一項上調(diào)用的函數(shù)和(可選的)作為歸并的初始值傻谁。
調(diào)用的函數(shù)接收 4 個參數(shù):前一個值、當(dāng)前值列粪、項的索引和數(shù)組對象审磁。
- 這兩個方法都會迭代數(shù)組的所有項陪踩,然后構(gòu)建一個最終返回的值。
字符串的兩種創(chuàng)建方式(字面量和構(gòu)造函數(shù))
- var str = new String("abc");
- var str=“abc”;
- 字符串的屬性length---字符串的長度
字符串的方法
- charAt(num):返回對應(yīng)字符串索引的內(nèi)容。
- charCodeAt(num):返回對應(yīng)的字符串索引的內(nèi)容的unicode編碼
- String.fromCharCode(unicode編碼);將參數(shù)中的unicode編碼返回成對應(yīng)的字符串的內(nèi)容岂座,多個編碼用逗號分隔态蒂。
- indexOf(‘查找字符’, ’開始位置’):從指定的位置從左往右查找對應(yīng)的字符,并返回對應(yīng)字符的位置费什。如果第二個參數(shù)為負數(shù)钾恢,默認當(dāng)做0來處理。 沒有找到就返回-1鸳址。
- lastIndexOf(‘查找字符’,’開始位置’):查找順序是相反瘩蚪,為從后往前找。
- replace替換字符串 string.replace("tmd", "*");
- split——根據(jù)分隔符稿黍、拆分成數(shù)組
把一個字符串分割成一個數(shù)組疹瘦。通過傳遞一個參數(shù)來分割。第一個參數(shù)就是分割字 符串的符號巡球。如果參數(shù)為空言沐,也是數(shù)組,只有一個數(shù)據(jù)酣栈。第二個參數(shù)用來限制數(shù)組 的長度呢灶,多余的切掉。 - substring():用來截取字符串的內(nèi)容
沒有參數(shù)全部截取钉嘹。相當(dāng)于從第0位開始截取鸯乃。
一個參數(shù)代表截取從參數(shù)的位置往后的字符串。
兩個參數(shù)代表截取兩個參數(shù)之間的字符串,包括第一個參數(shù)的位置缨睡。
兩個參數(shù)的時候鸟悴,當(dāng)?shù)诙€參數(shù)小于第一個參數(shù),自動交換位置奖年。
如果是負數(shù)细诸,當(dāng)做0來處理。 - substr(start, length); 用來截取字符串的內(nèi)容
start:開始的索引陋守,如果為負數(shù)震贵,從后往前進行截取,包括開始的索引水评。
length:截取的長度猩系。 - toLowerCase、toUpperCase
toUpperCase()轉(zhuǎn)換成大寫
toLowerCase()轉(zhuǎn)換成小寫 - ASCII碼和字符集
- ASCII(美國信息交換標(biāo)準(zhǔn)代碼)是基于拉丁字母的一套電腦編碼系統(tǒng)中燥,主要用于顯示現(xiàn)代英語和其他西歐語言寇甸。
- 字符(Character)是各種文字和符號的總稱,包括各國家文字疗涉、標(biāo)點符號拿霉、圖形符號、數(shù)字等咱扣。字符集(Character set)是多個字符的集合绽淘,字符集種類較多,每個字符集包含的字符個數(shù)不同闹伪,常見字符集名稱:ASCII字符集收恢、GB2312字符集、BIG5字符集祭往、 GB18030字符集、Unicode字符集等火窒。
- API(Application Programming Interface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)硼补,目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼熏矿,或理解內(nèi)部工作機制的細節(jié)已骇。
- 應(yīng)用
1.統(tǒng)計字符串中每個字符的個數(shù)?(數(shù)字票编、字母褪储、特殊字符)
2.密碼驗證。 - 綜合應(yīng)用
1.?dāng)?shù)字字母混合驗證碼
2 . 已知字符串“aabccdfffgjjjjjjjjj”編程實現(xiàn)以下功能慧域。
- 統(tǒng)計每個字符出現(xiàn)的次數(shù)鲤竹,顯示結(jié)果;
- 去掉重復(fù)的字符,使結(jié)果顯示 abcdfgj;