Day07 嚴格模式

嚴格模式

嚴格模式的目的

  • 消除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ù)組對象审磁。

字符串的兩種創(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;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昔榴,一起剝皮案震驚了整個濱河市辛藻,隨后出現(xiàn)的幾起案子碘橘,更是在濱河造成了極大的恐慌,老刑警劉巖吱肌,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痘拆,死亡現(xiàn)場離奇詭異,居然都是意外死亡氮墨,警方通過查閱死者的電腦和手機纺蛆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來规揪,“玉大人桥氏,你說我怎么就攤上這事×0” “怎么了识颊?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長奕坟。 經(jīng)常有香客問我祥款,道長,這世上最難降的妖魔是什么月杉? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任刃跛,我火速辦了婚禮,結(jié)果婚禮上苛萎,老公的妹妹穿的比我還像新娘桨昙。我一直安慰自己,他們只是感情好腌歉,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布蛙酪。 她就那樣靜靜地躺著,像睡著了一般翘盖。 火紅的嫁衣襯著肌膚如雪桂塞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天馍驯,我揣著相機與錄音阁危,去河邊找鬼。 笑死汰瘫,一個胖子當(dāng)著我的面吹牛狂打,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播混弥,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼趴乡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浙宜,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤官辽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粟瞬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體同仆,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年裙品,在試婚紗的時候發(fā)現(xiàn)自己被綠了俗批。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡市怎,死狀恐怖岁忘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情区匠,我是刑警寧澤干像,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站驰弄,受9級特大地震影響麻汰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜戚篙,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一五鲫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧岔擂,春花似錦位喂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痛倚,卻和暖如春规婆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背状原。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留苗踪,地道東北人颠区。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像通铲,于是被迫代替她去往敵國和親毕莱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • ??引用類型的值(對象)是引用類型的一個實例蛹稍。 ??在 ECMAscript 中,引用類型是一種數(shù)據(jù)結(jié)構(gòu)部服,用于將數(shù)...
    霜天曉閱讀 1,036評論 0 1
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,212評論 0 4
  • 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的 JavaScript 類型 使用基本類型和基本包裝類型 引用類型的...
    悶油瓶小張閱讀 676評論 0 0
  • 挑一個月圓的晚上 把一個月餅 咬成一口成缺
    Narcoris閱讀 93評論 0 0
  • 這個問題寫的人很多廓八,不能說沒有意義奉芦,只是從我的角度看問題。 希望我稚嫩的觀點剧蹂,稚嫩的經(jīng)歷声功,稚嫩的語言,各位看官不要...
    Flor閱讀 408評論 0 1