目錄數組
ES5和String2瀏覽器
1:ES5簡介2安全
2:嚴格模式簡介2函數
3:進入嚴格模式3this
4:如何調用嚴格模式3編碼
5:嚴格模式改變語法和行爲3spa
6:ES5新增數組方法4code
7:字符串7orm
8:聲明字符串7對象
9:字符串屬性7
12:字符串方法7
應用:9
ASCII碼和字符集9
字符串常見API(charCodeAt\fromCharCode\)11
應用:12
綜合應用:12
ECMAScript 5.1 (或僅 ES5) 是ECMAScript(基於JavaScript的規範)標準的修正。 與HTML5規範進程本質相似,ES5經過對現有JavaScript方法添加語句和原生ECMAScript對象作合併實現標準化。
除了正常運行模式,ECMAscript 5添加了第二種運行模式:"嚴格模式"(strict mode)。顧名思義,這種模式使得Javascript在更嚴格的條件下運行。
設立"嚴格模式"的目的,主要有如下幾個:。
1:消除Javascript語法的一些不合理、不嚴謹之處,減小一些怪異行爲。
2:消除代碼運行的一些不安全之處,保證代碼運行的安全:。
3:提升編譯器效率,增長運行速度。
4:爲將來新版本的Javascript作好鋪墊。
"嚴格模式"體現了Javascript更合理、更安全、更嚴謹的發展方向,包括IE 10在內的主流瀏覽器,都已經支持它,許多大項目已經開始全面擁抱它。
進入「嚴格模式」的標誌,書寫這行語句:"use strict";
老版本的瀏覽器會把它看成一行普通字符串,加以忽略。
"嚴格模式"有兩種調用方法,適用於不一樣的場合。
針對整個腳本文件:將"use strict"放在腳本文件的第一行,則整個腳本都將以"嚴格模式"運行。若是這行語句不在第一行,則無效,整個腳本以"正常模式"運行。若是不一樣模式的代碼文件合併成一個文件,這一點須要特別注意。
針對單個函數:將"use strict"放在函數的第一行,則整個函數以"嚴格模式"運行。
腳本文件的變通寫法:由於第一種調用方法不利於文件合併,因此更好的作法是,借用第二種方法,將整個腳本文件放在一個當即執行的匿名函數之中。
嚴格模式對Javascript的語法和行爲,都作了一些改變。
1:全局變量顯式聲明。
在正常模式中,若是一個變量沒有聲明就賦值,默認是全局變量。嚴格模式禁止這種用法,全局變量必須顯式聲明。所以,嚴格模式下,變量都必須先用var命令聲明,而後再使用。
2:函數形參不容許重複。
3:禁止使用with語句。
4:禁止函數內部this關鍵字指向全局對象,this指向undefined。
5:函數必須聲明在頂層。
未來Javascript的新版本會引入「塊級做用域"。爲了與新版本接軌,嚴格模式只容許在全局做用域或函數做用域的頂層聲明函數。也就是說,不容許在非函數的代碼塊內聲明函數。
// if(1){function a(){}} else {function a() {}}
ES5新增數組常見方法(indexof/forEach/map/reduce/filter)
1:forEach方法:遍歷數組。第二個參數爲可選的上下文參數(改變this指向)。
forEach方法中的function回調支持3個參數,第1個是遍歷的數組內容;第2個是對應的數組索引,第3個是數組自己。forEach不會遍歷空位置的內容。如:[1, , 3],只會遍歷1和3。
2:map方法:將數組映射成新數組。回調函數須要有返回值。
3:filter方法:指數組過濾後,返回過濾後的新數組。 filter的callback函數須要返回布爾值true(經過過濾)或false。
4:indexOf方法:返回整數索引值,若是沒有匹配(嚴格匹配),返回-1。 fromIndex可選,表示從這個位置開始搜索,若缺省或格式不合要求,使用默認值0。
5:reduce方法:歸併。遞歸減小。
callback函數接受4個參數:以前值、當前值、索引值以及數組自己。initialValue參數可選,表示初始值。若指定,則看成最初使用的previous值;若是缺省,則使用數組的第一個元素做爲previous初始值,同時current日後排一位,相比有initialValue值少一次迭代。
案例:
解析:
說明:
1:由於initialValue不存在,所以一開始的previous值等於數組的第一個元素。
2:從而current值在第一次調用的時候就是2。
3:最後兩個參數爲索引值index以及數組自己array。
JS中的任何數據類型均可以看成對象來看。因此string既是基本數據類型,又是對象。
var sStr = ‘字符串’;
var oStr = new String(‘字符串’);
length
計算字符串的長度(不區分中英文)。
字符串常見API (charAt\ indexOf\substring\slice\split\replace)
myStr.charAt(num) 等價 myStr[num]
返回在指定位置的字符。
.myStr.indexOf()
返回某個指定的字符串,在字符串中首次出現的位置。若是要檢索的字符串值沒有出現,則該方法返回 -1。
。
myStr.search()
返回出現的位置,查找不到返回-1。配合正則來用。
myStr.replace(「需替換的字符串」,「替換後的字符串」)
將字符串中的一些字符替換爲另一些字符。配合正則使用。
myStr.slice(start,end)
從指定的開始位置,到結束位置(不包括結束位置)的全部字符串。若是不指定結束位置,則從指定的開始位置,取到結尾。注意的是,myStr.slice() 與 myArr.slice() 類似。
myStr.substring(start,end)
從指定的開始位置,到結束位置(不包括)的全部字符串。若是不指定結束位置,則從指定的開始位置,取到結尾。
split("分割位置",[指定返回數組的長度]) 使用分隔符分隔字符串
將一個字符串分割成數組。
toLowerCase()
用於把字符串轉換爲小寫。
toUpperCase()
將字符串轉換爲大寫。
1.敏感詞過濾。
//現有敏感詞 ‘你妹,fuck,你大爺」 ,要求過字符串中的這些詞爲*** tmp res
2.密碼格式要求。
//判斷用戶的輸入是不是純數字
3.留言過濾。 以下
ASCII:American Standard Code for Information Interchange,美國信息交換標準代碼。
Unicode編碼:
Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裏的一項業界標準,包括字符集、編碼方案等。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,以知足跨語言、跨平臺進行文本轉換、處理的要求。 Unicode目前廣泛採用的是UCS-2,它用兩個字節來編碼一個字符。
如漢字"經"的編碼是0x7ECF,注意字符碼通常用十六進制來 表示,爲了與十進制區分,十六進制以0x開頭,0x7ECF轉換成十進制 就是32463,UCS-2用兩個字節來編碼字符,兩個字節就是16位二進制, 2的16次方等於65536,因此UCS-2最多能編碼65536個字符。
GBK編碼:
GBK全稱《漢字內碼擴展規範》(GBK即「國標」、「擴展」漢語拼音的第一個字母,英文名稱:Chinese Internal Code Specification)。GBK 向下與GB2312編碼兼容,向上支持 ISO 10646.1國際標準,是前者向後者過渡過程當中的一個承上啓下的產物。
UTF-8編碼:
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。 UTF-8用1到4個字節Byte編碼UNICODE字符。用在網頁上能夠同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
1.myStr.charCodeAt(num)
返回指定位置的字符的Unicode(是字符編碼的一種模式)編碼。
2.String.fromCharCode()
String的意思就是不能用本身定義的字符串名字來調用,例如定義一個變量字符串 var str="";只能用String來定義調用。接受一個或多個指定的Unicode值,而後返回一個或多個字符串。(把unicode編碼轉換爲字符串)。
1:統計字符串中每一個字符的個數。
1:數字字母混合驗證碼。4
2:(aabccd)統計每一個字符出現的次數,結果顯示 a 二、b 一、c 2,d1,去掉重複的字符,使結果顯示 abcd。 分治
Abcd
aabccd