成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端面試你所不知道系列

Julylovin / 2133人閱讀

摘要:請注意是創(chuàng)建一個全局對象的屬性,而不是聲明了一個全局變量。由于變量聲明自帶不可刪除屬性,比較跟,前者是變量聲明,帶不可刪除屬性,因此無法被刪除后者為全局變量的一個屬性,因此可以從全局變量中刪除。下期預(yù)告前端面試你所不知道系列偽類和偽元素

寫在開始

又到了一年的伊始,很多人可能因?yàn)楦鞣N原因想換一份工作,而找工作難免遇到各種各樣頭痛的面試題,于是我打算寫一個系列,關(guān)于面試中最常見或者前端一些基礎(chǔ)但又不是很深入了解的知識,供大家參考。

先來道開胃菜 var還是不var?

使用var定義

var a = "hello World"
function bb(){
 var a = "hello Tom";
    console.log(a);   
}
bb()   
console.log(a);    

不使用var定義

var e = "hello world";
function cc(){
    e = "hello Tom";
    console.log(e);
}
cc()   
console.log(e)    

猜猜會執(zhí)行什么?

其實(shí)很簡單,使用var先后打印// "hello Tom" // "hello world",

不使用var先后打印// "hello Tom" // "hello Tom"

大家都知道Javascript聲明變量是通過關(guān)鍵字var。使用var關(guān)鍵字是在當(dāng)前域中聲明變量,如果在方法中聲明,則為局部變量(local varibble);如果在全局域中聲明,則為全局變量。

但在非嚴(yán)格模式下,不通過var直接聲明變量,則是全局變量,好像也不會報錯,例如a = 1 console.log(a) // 1,但這樣真的沒問題嗎?那么執(zhí)行a = 1; 發(fā)生了什么呢?

它會嘗試在當(dāng)前作用域鏈(如果是在方法中,則當(dāng)前作用域鏈代表全局和方法局部作用域)中解析a;如果在任何當(dāng)前作用域找到a;則會對a屬性賦值;如果沒有找到a,它會在全局對象(當(dāng)前作用域最頂層,如window對象)中創(chuàng)造a屬性并賦值。

請注意!??!是創(chuàng)建一個全局對象的屬性,而不是聲明了一個全局變量。

或許你可能不是很明白‘聲明變量’和‘創(chuàng)建對象屬性’有什么區(qū)別。但事實(shí)上,Javascript 的變量聲明、創(chuàng)建屬性都有一定的標(biāo)志去聲明他們的屬性如:只讀(ReadOnly)不可枚舉(DontEnum)不可刪除(DontDelete)等等。

由于‘變量聲明’自帶不可刪除屬性,比較var a = 1 跟 a = 1,前者是變量聲明,帶不可刪除屬性,因此無法被刪除;后者為全局變量的一個屬性,因此可以從全局變量中刪除。

    var a = 1
    b = 2
    console.log(delete a) // false
    console.log(delete b) // true
變量提升

使用var定義:

function hh(){
    console.log(a);
    var a = "hello world";
}
hh()    //undefined

不使用var定義:

function hh(){
    console.log(a);
    a = "hello world";
}
hh()    // "a is not defined"

還有一點(diǎn)很容易被忽略,在ES5的"use strict"模式下,如果變量沒有使用var定義,就會報錯。
這也是一個差別。

總結(jié)

1.在函數(shù)作用域內(nèi) 加var定義的變量是局部變量,不加var定義的就成了全局變量。

2.在全局作用域下,使用var定義的變量不可以delete,沒有var 定義的變量可以delete。

3.使用var 定義變量還會提升變量聲明。

4.在ES5的"use strict"模式下,如果變量沒有使用var定義,就會報錯。

寫在最后

由于個人能力有限,如果文中出現(xiàn)任何錯誤,歡迎各位大神提出批評和建議,這是鄙人首次發(fā)表技術(shù)性文章,希望大家多多支持。

下期預(yù)告:前端面試你所不知道系列--偽類和偽元素

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/107250.html

相關(guān)文章

  • 一些所不知道的VS Code插件

    摘要:摘要你所不知道的系列。允許你寫入縮寫代碼并返回的相應(yīng)標(biāo)記,目前已經(jīng)內(nèi)置,所以不用配置了。自從年雙十一正式上線,累計處理了億錯誤事件,付費(fèi)客戶有金山軟件百姓網(wǎng)等眾多品牌企業(yè)。摘要: 你所不知道的系列。 原文:提高 JavaScript 開發(fā)效率的高級 VSCode 擴(kuò)展之二! 作者:前端小智 Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 作為一名業(yè)余愛好者、專業(yè)人員,甚至是每月只有一次編...

    Near_Li 評論0 收藏0
  • 練就Java24章真經(jīng)—所不知道的工廠方法

    摘要:用專業(yè)的話來講設(shè)計模式是一套被反復(fù)使用多數(shù)人知曉的經(jīng)過分類編目的代碼設(shè)計經(jīng)驗(yàn)的總結(jié)創(chuàng)建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。工廠方法模式的擴(kuò)展性非常優(yōu)秀。工廠方法模式是典型的解耦框架。 前言 最近一直在Java方向奮斗《終于,我還是下決心學(xué)Java后臺了》,今天抽空開始學(xué)習(xí)Java的設(shè)計模式了。計劃有時間就去學(xué)習(xí),你這么有時間,還不來一起上車嗎? 之所以要學(xué)...

    Chiclaim 評論0 收藏0
  • 【好好面試】學(xué)完Aop,連動態(tài)代理的原理都不懂?

    摘要:總結(jié)動態(tài)代理的相關(guān)原理已經(jīng)講解完畢,接下來讓我們回答以下幾個思考題。 【干貨點(diǎn)】 此處是【好好面試】系列文的第12篇文章。文章目標(biāo)主要是通過原理剖析的方式解答Aop動態(tài)代理的面試熱點(diǎn)問題,通過一步步提出問題和了解原理的方式,我們可以記得更深更牢,進(jìn)而解決被面試官卡住喉嚨的情況。問題如下 SpringBoot默認(rèn)代理類型是什么 為什么不用靜態(tài)代理 JDK動態(tài)代理原理 CGLIB動態(tài)代理...

    Keven 評論0 收藏0
  • 面試必考之http狀態(tài)碼有哪些

    摘要:背景狀態(tài)碼有哪些,這也是一個很高頻的面試問題。總結(jié)僅僅三個狀態(tài)碼,都可以牽涉到如此豐富的知識,對于狀態(tài)碼,我們不能只是片面的去背誦狀態(tài)碼及對應(yīng)的含義,要去主動挖掘,深入,借助狀態(tài)碼來建立自己的網(wǎng)絡(luò)體系。 背景 http狀態(tài)碼有哪些,這也是一個很高頻的面試問題。一般大家都知道404頁面不存在,500服務(wù)器錯誤,301重定向,302臨時重定向,200ok,401未授權(quán)啥的。 如果只是簡單的...

    wing324 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<