摘要:以我的理解簡單非嚴格模式下,函數(shù)形參和綁定,二者無論誰修改,都會互相影響。嚴格模式下,參數(shù)的值不會隨對象的值的改變而變化。有意思的是在下,如果使用函數(shù)默認值,也會出現(xiàn)類似嚴格模式的效果。原文首發(fā)于我的博客
下面這一題來自 javascript-puzzlers
function sidEffecting(ary) { ary[0] = ary[2] } function bar(a,b,c) { c = 10 sidEffecting(arguments) return a + b + c } bar(1,1,1)
上述的結(jié)果是什么?答案是21,當然這是非嚴格模式,如果嚴格模式,那么答案為12。
以我的理解簡單非嚴格模式下,函數(shù)形參和arguments綁定,二者無論誰修改,都會互相影響。
但是,嚴格模式下,任何在函數(shù)體內(nèi)的修改,或形參,或 arguments 只會影響自己,不會影響對方,可以修改下列代碼試一試。
function test(a, b, c) { // "use strict" var a = 4 console.log(a + b + c) // arguments[0] = 4 console.log(arguments[0] + arguments[1] + arguments[2]) } test(1,2,3)
嚴格模式下,參數(shù)的值不會隨 arguments 對象的值的改變而變化。在正常模式下,對于第一個參數(shù)是 arg 的函數(shù),對 arg 賦值時會同時賦值給 arguments[0],反之亦然(除非沒有參數(shù),或者 arguments[0] 被刪除)。嚴格模式下,函數(shù)的 arguments 對象會保存函數(shù)被調(diào)用時的原始參數(shù)。arguments[i] 的值不會隨與之相應的參數(shù)的值的改變而變化,同名參數(shù)的值也不會隨與之相應的 arguments[i] 的值的改變而變化。
有意思的是在ES6下,如果使用函數(shù)默認值,也會出現(xiàn)類似嚴格模式的效果。
function test(a, b, c = 3) { var a = 4 console.log(a + b + c) // arguments[0] = 4 console.log(arguments[0] + arguments[1] + arguments[2]) } test(1,2,3)
花了半個小時,發(fā)現(xiàn)自己以前對嚴格模式理解還有不足,以后這道題作為面試題還不錯。
原文首發(fā)于我的github博客:https://github.com/isLishude/...
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88723.html
摘要:最近在做的后臺管理頁面,其中用到了來選擇日期時間,但是在將數(shù)據(jù)傳回后臺的過程中遇到了一些令人頭疼的問題,在此記錄一下解決方案,以免日后再次遇到。 最近在做vue+element-ui的后臺管理頁面,其中用到了DateTimePicker來選擇日期時間,但是在將數(shù)據(jù)傳回后臺的過程中遇到了一些令人頭疼的問題,在此記錄一下解決方案,以免日后再次遇到。 showImg(https://segm...
摘要:以下簡稱是語言的下一代標準。因為當前版本的是在年發(fā)布的,所以又稱。用它所聲明的變量,只在命令所在的代碼塊內(nèi)有效。的繼承機制,實質(zhì)是先創(chuàng)造父類的實例對象所以必須先調(diào)用方法,然后再用子類的構(gòu)造函數(shù)修改。 ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標準。因為當前版本的ES6是在2015年發(fā)布的,所以又稱ECMAScript 2015。 也就是說,ES6就是E...
摘要:以下簡稱是語言的下一代標準。的繼承機制,實質(zhì)是先創(chuàng)造父類的實例對象所以必須先調(diào)用方法,然后再用子類的構(gòu)造函數(shù)修改??偨Y(jié)以上就是最常用的一些語法,可以說這的語法,在的日常使用中占了追加十分鐘好的嗎分鐘掌握核心內(nèi)容下 ECMAScript 6(以下簡稱ES6)是JavaScript語言的下一代標準。因為當前版本的ES6是在2015年發(fā)布的,所以又稱ECMAScript 2015。 也就是說...
摘要:的對象只是指向內(nèi)存中某個位置的指針。所以在拷貝中的對象時,要根據(jù)實際情況做一些考慮。結(jié)論中最好的對象拷貝的算法,很大程度上取決于其使用環(huán)境,以及你需要拷貝的對象類型。 翻譯:瘋狂的技術宅原文:https://smalldata.tech/blog/2... 本文首發(fā)微信公眾號:前端先鋒歡迎關注,每天都給你推送新鮮的前端技術文章 在開始之前,我先普及一些基礎知識。Javascrip...
摘要:對于一個有追求的程序員來說必須讀源碼,當然閱讀源碼是一件令人頭疼的事。和差不多,想法一樣,但是和相比,搜索到的有價值結(jié)果不是很多,沒有的理想,還有一些來著百度知道。 對于一個有追求的程序員來說必須讀源碼,當然閱讀源碼是一件令人頭疼的事。閱讀別人的代碼遠比自己寫代碼要難。Linus 是Linux的早期作者,一句影響深遠的話是Read The Fucking Source Code(RTF...
閱讀 3025·2021-11-22 12:06
閱讀 605·2021-09-03 10:29
閱讀 6559·2021-09-02 09:52
閱讀 2024·2019-08-30 15:52
閱讀 3420·2019-08-29 16:39
閱讀 1198·2019-08-29 15:35
閱讀 2071·2019-08-29 15:17
閱讀 1427·2019-08-29 11:17