摘要:構(gòu)造函數(shù)返回值是或,這種情況下指向的是返回的對(duì)象。并執(zhí)行了構(gòu)造函數(shù)中的方法如果函數(shù)沒(méi)有返回其他對(duì)象,那么指向這個(gè)新對(duì)象,否則指向構(gòu)造函數(shù)中返回的對(duì)象。對(duì)于文檔來(lái)說(shuō)應(yīng)當(dāng)是唯一的。的值意味著其不可能是基本數(shù)據(jù)類型。
關(guān)于【Step-By-Step】
不積跬步無(wú)以至千里。
Step-By-Step (點(diǎn)擊進(jìn)入項(xiàng)目) 是我于 2019-05-20 開(kāi)始的一個(gè)項(xiàng)目,項(xiàng)目愿景:一步一個(gè)腳印,量變引起質(zhì)變。
Step-By-Step 僅會(huì)在工作日發(fā)布面試題,主要考慮到部分小伙伴平時(shí)工作較為繁忙,或周末有出游計(jì)劃。每個(gè)周末我會(huì)仔細(xì)閱讀大家的答案,整理最一份較優(yōu)答案出來(lái),因本人水平有限,有誤的地方,大家及時(shí)指正。參與答題的小伙伴,可以對(duì)比自己的回答。
答題不是目的,不希望大家僅僅是簡(jiǎn)單的搜索答案,復(fù)制粘貼到issue下。更多的是希望大家及時(shí)查漏補(bǔ)缺 / 鞏固相關(guān)知識(shí)。
更多優(yōu)質(zhì)文章可戳: https://github.com/YvetteLau/...
1.如何正確判斷this的指向?(2019-05-20)如果用一句話說(shuō)明 this 的指向,那么即是: 誰(shuí)調(diào)用它,this 就指向誰(shuí)。
但是僅通過(guò)這句話,我們很多時(shí)候并不能準(zhǔn)確判斷 this 的指向。因此我們需要借助一些規(guī)則去幫助自己:
this 的指向可以按照以下順序判斷:
1. 全局環(huán)境中的 this瀏覽器環(huán)境:無(wú)論是否在嚴(yán)格模式下,在全局執(zhí)行環(huán)境中(在任何函數(shù)體外部)this 都指向全局對(duì)象 window;
node 環(huán)境:無(wú)論是否在嚴(yán)格模式下,在全局執(zhí)行環(huán)境中(在任何函數(shù)體外部),this 都是空對(duì)象 {};
2. 是否是 new 綁定如果是 new 綁定,并且構(gòu)造函數(shù)中沒(méi)有返回 function 或者是 object,那么 this 指向這個(gè)新對(duì)象。如下:
構(gòu)造函數(shù)返回值不是 function 或 object。
function Super(age) { this.age = age; } let instance = new Super("26"); console.log(instance.age); //26
構(gòu)造函數(shù)返回值是 function 或 object,這種情況下 this 指向的是返回的對(duì)象。
function Super(age) { this.age = age; let obj = {a: "2"}; return obj; } let instance = new Super("hello"); console.log(instance.age); //undefined
你可以想知道為什么會(huì)這樣?我們來(lái)看一下 new 的實(shí)現(xiàn)原理:
創(chuàng)建一個(gè)新對(duì)象。
這個(gè)新對(duì)象會(huì)被執(zhí)行 [[原型]] 連接。
屬性和方法被加入到 this 引用的對(duì)象中。并執(zhí)行了構(gòu)造函數(shù)中的方法.
如果函數(shù)沒(méi)有返回其他對(duì)象,那么 this 指向這個(gè)新對(duì)象,否則 this 指向構(gòu)造函數(shù)中返回的對(duì)象。
function new(func) { let target = {}; target.__proto__ = func.prototype; let res = func.call(target); //排除 null 的情況 if (res && typeof(res) == "object" || typeof(res) == "function") { return res; } return target; }3. 函數(shù)是否通過(guò) call,apply 調(diào)用,或者使用了 bind 綁定,如果是,那么this綁定的就是指定的對(duì)象【歸結(jié)為顯式綁定】。
function info(){ console.log(this.age); } var person = { age: 20, info } var age = 28; var info = person.info; info.call(person); //20 info.apply(person); //20 info.bind(person)(); //20
這里同樣需要注意一種特殊情況,如果 call,apply 或者 bind 傳入的第一個(gè)參數(shù)值是 undefined 或者 null,嚴(yán)格模式下 this 的值為傳入的值 null /undefined。非嚴(yán)格模式下,實(shí)際應(yīng)用的默認(rèn)綁定規(guī)則,this 指向全局對(duì)象(node環(huán)境為global,瀏覽器環(huán)境為window)
function info(){ //node環(huán)境中:非嚴(yán)格模式 global,嚴(yán)格模式為null //瀏覽器環(huán)境中:非嚴(yán)格模式 window,嚴(yán)格模式為null console.log(this); console.log(this.age); } var person = { age: 20, info } var age = 28; var info = person.info; //嚴(yán)格模式拋出錯(cuò)誤; //非嚴(yán)格模式,node下輸出undefined(因?yàn)槿值腶ge不會(huì)掛在 global 上) //非嚴(yán)格模式。瀏覽器環(huán)境下輸出 28(因?yàn)槿值腶ge會(huì)掛在 window 上) info.call(null);4. 隱式綁定,函數(shù)的調(diào)用是在某個(gè)對(duì)象上觸發(fā)的,即調(diào)用位置上存在上下文對(duì)象。典型的隱式調(diào)用為: xxx.fn()
function info(){ console.log(this.age); } var person = { age: 20, info } var age = 28; person.info(); //20;執(zhí)行的是隱式綁定5. 默認(rèn)綁定,在不能應(yīng)用其它綁定規(guī)則時(shí)使用的默認(rèn)規(guī)則,通常是獨(dú)立函數(shù)調(diào)用。
非嚴(yán)格模式: node環(huán)境,執(zhí)行全局對(duì)象 global,瀏覽器環(huán)境,執(zhí)行全局對(duì)象 window。
嚴(yán)格模式:執(zhí)行 undefined
function info(){ console.log(this.age); } var age = 28; //嚴(yán)格模式;拋錯(cuò) //非嚴(yán)格模式,node下輸出 undefined(因?yàn)槿值腶ge不會(huì)掛在 global 上) //非嚴(yán)格模式。瀏覽器環(huán)境下輸出 28(因?yàn)槿值腶ge不會(huì)掛在 window 上) //嚴(yán)格模式拋出,因?yàn)?this 此時(shí)是 undefined info();6. 箭頭函數(shù)的情況:
箭頭函數(shù)沒(méi)有自己的this,繼承外層上下文綁定的this。
let obj = { age: 20, info: function() { return () => { console.log(this.age); //this繼承的是外層上下文綁定的this } } } let person = {age: 28}; let info = obj.info(); info(); //20 let info2 = obj.info.call(person); info2(); //28
點(diǎn)擊查看更多2.JS中原始類型有哪幾種?null 是對(duì)象嗎?原始數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型有什么區(qū)別?(2019-05-21) 目前,JS原始類型有六種,分別為:
Boolean
String
Number
Undefined
Null
Symbol(ES6新增)
ES10新增了一種基本數(shù)據(jù)類型:BigInt
復(fù)雜數(shù)據(jù)類型只有一種: Object
null 不是一個(gè)對(duì)象,盡管 typeof null 輸出的是 object,這是一個(gè)歷史遺留問(wèn)題,JS 的最初版本中使用的是 32 位系統(tǒng),為了性能考慮使用低位存儲(chǔ)變量的類型信息,000 開(kāi)頭代表是對(duì)象,null 表示為全零,所以將它錯(cuò)誤的判斷為 object 。
基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型的區(qū)別為:內(nèi)存的分配不同
基本數(shù)據(jù)類型存儲(chǔ)在棧中。
復(fù)雜數(shù)據(jù)類型存儲(chǔ)在堆中,棧中存儲(chǔ)的變量,是指向堆中的引用地址。
訪問(wèn)機(jī)制不同
基本數(shù)據(jù)類型是按值訪問(wèn)
復(fù)雜數(shù)據(jù)類型按引用訪問(wèn),JS不允許直接訪問(wèn)保存在堆內(nèi)存中的對(duì)象,在訪問(wèn)一個(gè)對(duì)象時(shí),首先得到的是這個(gè)對(duì)象在堆內(nèi)存中的地址,然后再按照這個(gè)地址去獲得這個(gè)對(duì)象中的值。
復(fù)制變量時(shí)不同(a=b)
基本數(shù)據(jù)類型:a=b;是將b中保存的原始值的副本賦值給新變量a,a和b完全獨(dú)立,互不影響
復(fù)雜數(shù)據(jù)類型:a=b;將b保存的對(duì)象內(nèi)存的引用地址賦值給了新變量a;a和b指向了同一個(gè)堆內(nèi)存地址,其中一個(gè)值發(fā)生了改變,另一個(gè)也會(huì)改變。
let b = { age: 10 } let a = b; a.age = 20; console.log(a); //{ age: 20 }
參數(shù)傳遞的不同(實(shí)參/形參)
函數(shù)傳參都是按值傳遞(棧中的存儲(chǔ)的內(nèi)容):基本數(shù)據(jù)類型,拷貝的是值;復(fù)雜數(shù)據(jù)類型,拷貝的是引用地址
//基本數(shù)據(jù)類型 let b = 10 function change(info) { info=20; } //info=b;基本數(shù)據(jù)類型,拷貝的是值得副本,二者互不干擾 change(b); console.log(b);//10
//復(fù)雜數(shù)據(jù)類型 let b = { age: 10 } function change(info) { info.age = 20; } //info=b;根據(jù)第三條差異,可以看出,拷貝的是地址的引用,修改互相影響。 change(b); console.log(b);//{ age: 20 }
點(diǎn)擊查看更多3.說(shuō)一說(shuō)你對(duì)HTML5語(yǔ)義化的理解(2019-05-22)
語(yǔ)義化意味著顧名思義,HTML5的語(yǔ)義化指的是合理正確的使用語(yǔ)義化的標(biāo)簽來(lái)創(chuàng)建頁(yè)面結(jié)構(gòu),如 header,footer,nav,從標(biāo)簽上即可以直觀的知道這個(gè)標(biāo)簽的作用,而不是濫用div。
語(yǔ)義化的優(yōu)點(diǎn)有:代碼結(jié)構(gòu)清晰,易于閱讀,利于開(kāi)發(fā)和維護(hù)
方便其他設(shè)備解析(如屏幕閱讀器)根據(jù)語(yǔ)義渲染網(wǎng)頁(yè)。
有利于搜索引擎優(yōu)化(SEO),搜索引擎爬蟲(chóng)會(huì)根據(jù)不同的標(biāo)簽來(lái)賦予不同的權(quán)重
語(yǔ)義化標(biāo)簽主要有:title:主要用于頁(yè)面的頭部的信息介紹
header:定義文檔的頁(yè)眉
nav:主要用于頁(yè)面導(dǎo)航
main:規(guī)定文檔的主要內(nèi)容。對(duì)于文檔來(lái)說(shuō)應(yīng)當(dāng)是唯一的。它不應(yīng)包含在文檔中重復(fù)出現(xiàn)的內(nèi)容,比如側(cè)欄、導(dǎo)航欄、版權(quán)信息、站點(diǎn)標(biāo)志或搜索表單。
article:獨(dú)立的自包含內(nèi)容
h1~h6:定義標(biāo)題
ul: 用來(lái)定義無(wú)序列表
ol: 用來(lái)定義有序列表
address:定義文檔或文章的作者/擁有者的聯(lián)系信息。
canvas:用于繪制圖像
dialog:定義一個(gè)對(duì)話框、確認(rèn)框或窗口
aside:定義其所處內(nèi)容之外的內(nèi)容。 的內(nèi)容可用作文章的側(cè)欄。
section:定義文檔中的節(jié)(section、區(qū)段)。比如章節(jié)、頁(yè)眉、頁(yè)腳或文檔中的其他部分。
figure:規(guī)定獨(dú)立的流內(nèi)容(圖像、圖表、照片、代碼等等)。figure 元素的內(nèi)容應(yīng)該與主內(nèi)容相關(guān),但如果被刪除,則不應(yīng)對(duì)文檔流產(chǎn)生影響。
details:描述文檔或者文檔某一部分細(xì)節(jié)
mark:義帶有記號(hào)的文本。
語(yǔ)義化應(yīng)用例如使用這些可視化標(biāo)簽,構(gòu)建下面的頁(yè)面結(jié)構(gòu):
對(duì)于早期不支持 HTML5 的瀏覽器,如IE8及更早之前的版本,我們可以引入 html5shiv 來(lái)支持。
點(diǎn)擊查看更多4.如何讓 (a == 1 && a == 2 && a == 3) 的值為true? 4.1 利用隱式轉(zhuǎn)換規(guī)則
== 操作符在左右數(shù)據(jù)類型不一致時(shí),會(huì)先進(jìn)行隱式轉(zhuǎn)換。
a == 1 && a == 2 && a == 3 的值意味著其不可能是基本數(shù)據(jù)類型。因?yàn)槿绻?a 是 null 或者是 undefined bool類型,都不可能返回true。
因此可以推測(cè) a 是復(fù)雜數(shù)據(jù)類型,JS 中復(fù)雜數(shù)據(jù)類型只有 object,回憶一下,Object 轉(zhuǎn)換為原始類型會(huì)調(diào)用什么方法?
如果部署了 [Symbol.toPrimitive] 接口,那么調(diào)用此接口,若返回的不是基本數(shù)據(jù)類型,拋出錯(cuò)誤。
如果沒(méi)有部署 [Symbol.toPrimitive] 接口,那么根據(jù)要轉(zhuǎn)換的類型,先調(diào)用 valueOf / toString
非Date類型對(duì)象,hint 是 default 時(shí),調(diào)用順序?yàn)椋?b>valueOf >>> toString,即valueOf 返回的不是基本數(shù)據(jù)類型,才會(huì)繼續(xù)調(diào)用 valueOf,如果toString 返回的還不是基本數(shù)據(jù)類型,那么拋出錯(cuò)誤。
如果 hint 是 string(Date對(duì)象默人的hint是string) ,調(diào)用順序?yàn)椋?b>toString >>> valueOf,即toString 返回的不是基本數(shù)據(jù)類型,才會(huì)繼續(xù)調(diào)用 valueOf,如果valueOf 返回的還不是基本數(shù)據(jù)類型,那么拋出錯(cuò)誤。
如果 hint 是 number,調(diào)用順序?yàn)椋?valueOf >>> toString
var obj = { [Symbol.toPrimitive](hint) { console.log(hint); return 10; }, valueOf() { console.log("valueOf"); return 20; }, toString() { console.log("toString"); return "hello"; } } console.log(obj + "yvette"); //default //如果沒(méi)有部署 [Symbol.toPrimitive]接口,調(diào)用順序?yàn)閌valueOf` >>> `toString` console.log(obj == "yvette"); //default //如果沒(méi)有部署 [Symbol.toPrimitive]接口,調(diào)用順序?yàn)閌valueOf` >>> `toString` console.log(obj * 10);//number //如果沒(méi)有部署 [Symbol.toPrimitive]接口,調(diào)用順序?yàn)閌valueOf` >>> `toString` console.log(Number(obj));//number //如果沒(méi)有部署 [Symbol.toPrimitive]接口,調(diào)用順序?yàn)閌valueOf` >>> `toString` console.log(String(obj));//string //如果沒(méi)有部署 [Symbol.toPrimitive]接口,調(diào)用順序?yàn)閌toString` >>> `valueOf`
那么對(duì)于這道題,只要 [Symbol.toPrimitive] 接口,第一次返回的值是 1,然后遞增,即成功成立。
let a = { [Symbol.toPrimitive]: (function(hint) { let i = 1; //閉包的特性之一:i 不會(huì)被回收 return function() { return i++; } })() } console.log(a == 1 && a == 2 && a == 3); //true
調(diào)用 valueOf 接口的情況:
let a = { valueOf: (function() { let i = 1; //閉包的特性之一:i 不會(huì)被回收 return function() { return i++; } })() } console.log(a == 1 && a == 2 && a == 3); //true
另外,除了i自增的方法外,還可以利用 正則,如下
let a = { reg: /d/g, valueOf () { return this.reg.exec(123)[0] } } console.log(a == 1 && a == 2 && a == 3); //true
調(diào)用 toString 接口的情況,不再做說(shuō)明。
4.2 利用數(shù)據(jù)劫持使用 Object.defineProperty 定義的屬性,在獲取屬性時(shí),會(huì)調(diào)用 get 方法。利用這個(gè)特性,我們?cè)?window 對(duì)象上定義 a 屬性,如下:
let i = 1; Object.defineProperty(window, "a", { get: function() { return i++; } }); console.log(a == 1 && a == 2 && a == 3); //true
ES6 新增了 Proxy ,此處我們同樣可以利用 Proxy 去實(shí)現(xiàn),如下:
let a = new Proxy({}, { i: 1, get: function () { return () => this.i++; } }); console.log(a == 1 && a == 2 && a == 3); // true4.3 數(shù)組的 toString 接口默認(rèn)調(diào)用數(shù)組的 join 方法,重寫(xiě)數(shù)組的 join 方法。
let a = [1, 2, 3]; a.join = a.shift; console.log(a == 1 && a == 2 && a == 3); //true4.4 利用 with 關(guān)鍵字
我本人對(duì) with 向來(lái)是敬而遠(yuǎn)之的。不過(guò) with 的確也是此題方法之一:
let i = 0; with ({ get a() { return ++i; } }) { console.log(a == 1 && a == 2 && a == 3); //true }
點(diǎn)擊查看更多5.防抖(debounce)函數(shù)的作用是什么?有哪些應(yīng)用場(chǎng)景,請(qǐng)實(shí)現(xiàn)一個(gè)防抖函數(shù)。 防抖函數(shù)的作用
防抖函數(shù)的作用就是控制函數(shù)在一定時(shí)間內(nèi)的執(zhí)行次數(shù)。防抖意味著N秒內(nèi)函數(shù)只會(huì)被執(zhí)行一次,如果N秒內(nèi)再次被觸發(fā),則重新計(jì)算延遲時(shí)間。
舉例說(shuō)明:小思最近在減肥,但是她非常貪吃。為此,與其男朋友約定好,如果10天不吃零食,就可以購(gòu)買一個(gè)包(不要問(wèn)為什么是包,因?yàn)榘伟俨?。但是如果中間吃了一次零食,那么就要重新計(jì)算時(shí)間,直到小思堅(jiān)持10天沒(méi)有吃零食,才能購(gòu)買一個(gè)包。所以,管不住嘴的小思,沒(méi)有機(jī)會(huì)買包(悲傷的故事)...這就是防抖。
不管吃沒(méi)吃零食,每10天買一個(gè)包,中間想買包,忍著,等到第十天的時(shí)候再買,這種情況是節(jié)流。如何控制女朋友的消費(fèi),各位攻城獅們,get到了嗎?防抖可比節(jié)流有效多了!
防抖應(yīng)用場(chǎng)景搜索框輸入查詢,如果用戶一直在輸入中,沒(méi)有必要不停地調(diào)用去請(qǐng)求服務(wù)端接口,等用戶停止輸入的時(shí)候,再調(diào)用,設(shè)置一個(gè)合適的時(shí)間間隔,有效減輕服務(wù)端壓力。
表單驗(yàn)證
按鈕提交事件。
瀏覽器窗口縮放,resize事件等。
防抖函數(shù)實(shí)現(xiàn)事件第一次觸發(fā)時(shí),timer 是 null,調(diào)用 later(),若 immediate 為true,那么立即調(diào)用 func.apply(this, params);如果 immediate 為 false,那么過(guò) wait 之后,調(diào)用 func.apply(this, params)
事件第二次觸發(fā)時(shí),如果 timer 已經(jīng)重置為 null(即 setTimeout 的倒計(jì)時(shí)結(jié)束),那么流程與第一次觸發(fā)時(shí)一樣,若 timer 不為 null(即 setTimeout 的倒計(jì)時(shí)未結(jié)束),那么清空定時(shí)器,重新開(kāi)始計(jì)時(shí)。
function debounce(func, wait, immediate = true) { let timer; // 延遲執(zhí)行函數(shù) const later = (context, args) => setTimeout(() => { timer = null;// 倒計(jì)時(shí)結(jié)束 if (!immediate) { func.apply(context, args); //執(zhí)行回調(diào) context = args = null; } }, wait); let debounced = function (...params) { let context = this; let args = params; if (!timer) { timer = later(context, args); if (immediate) { //立即執(zhí)行 func.apply(context, args); } } else { clearTimeout(timer); //函數(shù)在每個(gè)等待時(shí)延的結(jié)束被調(diào)用 timer = later(context, args); } } debounced.cancel = function () { clearTimeout(timer); timer = null; }; return debounced; };
immediate 為 true 時(shí),表示函數(shù)在每個(gè)等待時(shí)延的開(kāi)始被調(diào)用。
immediate 為 false 時(shí),表示函數(shù)在每個(gè)等待時(shí)延的結(jié)束被調(diào)用。
只要高頻事件觸發(fā),那么回調(diào)函數(shù)至少被調(diào)用一次。
點(diǎn)擊查看更多
參考文章:
[1] https://www.ecma-internationa...
[2] 嗨,你真的懂this嗎?
[3] 【面試篇】寒冬求職季之你必須要懂的原生JS(上)
[4] 【面試篇】寒冬求職季之你必須要懂的原生JS(中)
[5] https://digcss.com/throttle-t...
謝謝各位小伙伴愿意花費(fèi)寶貴的時(shí)間閱讀本文,如果本文給了您一點(diǎn)幫助或者是啟發(fā),請(qǐng)不要吝嗇你的贊和Star,您的肯定是我前進(jìn)的最大動(dòng)力。https://github.com/YvetteLau/...
關(guān)注公眾號(hào),加入技術(shù)交流群
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109867.html
摘要:禁止內(nèi)聯(lián)腳本執(zhí)行規(guī)則較嚴(yán)格,目前發(fā)現(xiàn)使用。合理使用上報(bào)可以及時(shí)發(fā)現(xiàn),利于盡快修復(fù)問(wèn)題。因?yàn)槭录?huì)從目標(biāo)元素一層層冒泡至對(duì)象。允許給一個(gè)事件注冊(cè)多個(gè)監(jiān)聽(tīng)。表示在捕獲階段觸發(fā),表示在冒泡階段觸發(fā)。 關(guān)于【Step-By-Step】 Step-By-Step (點(diǎn)擊進(jìn)入項(xiàng)目) 是我于 2019-05-20 開(kāi)始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。每個(gè)周末我會(huì)仔細(xì)閱讀大家的答案,整理最一份...
摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...
摘要:關(guān)于點(diǎn)擊進(jìn)入項(xiàng)目是我于開(kāi)始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。即使這個(gè)時(shí)間周期內(nèi),小明取得多次滿分。創(chuàng)建作用域鏈在執(zhí)行期上下文的創(chuàng)建階段,作用域鏈?zhǔn)窃谧兞繉?duì)象之后創(chuàng)建的。這種一層一層的關(guān)系,就是作用域鏈。 關(guān)于【Step-By-Step】 Step-By-Step (點(diǎn)擊進(jìn)入項(xiàng)目) 是我于 2019-05-20 開(kāi)始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。每個(gè)周末我會(huì)仔細(xì)閱讀大家的答...
摘要:關(guān)于點(diǎn)擊進(jìn)入項(xiàng)目是我于開(kāi)始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。即使這個(gè)時(shí)間周期內(nèi),小明取得多次滿分。創(chuàng)建作用域鏈在執(zhí)行期上下文的創(chuàng)建階段,作用域鏈?zhǔn)窃谧兞繉?duì)象之后創(chuàng)建的。這種一層一層的關(guān)系,就是作用域鏈。 關(guān)于【Step-By-Step】 Step-By-Step (點(diǎn)擊進(jìn)入項(xiàng)目) 是我于 2019-05-20 開(kāi)始的一個(gè)項(xiàng)目,每個(gè)工作日發(fā)布一道面試題。每個(gè)周末我會(huì)仔細(xì)閱讀大家的答...
閱讀 3991·2021-11-18 13:21
閱讀 4801·2021-09-27 14:01
閱讀 3120·2019-08-30 15:53
閱讀 2395·2019-08-30 15:43
閱讀 1741·2019-08-30 13:10
閱讀 1521·2019-08-29 18:39
閱讀 897·2019-08-29 15:05
閱讀 3350·2019-08-29 14:14