成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

前端面試你所不知道系列

Julylovin / 2169人閱讀

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

寫在開始

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

先來道開胃菜 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)    

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

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

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

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

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

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

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

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

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

    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定義,就會(huì)報(bào)錯(cuò)。
這也是一個(gè)差別。

總結(jié)

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

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

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

4.在ES5的"use strict"模式下,如果變量沒有使用var定義,就會(huì)報(bào)錯(cuò)。

寫在最后

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/107250.html

相關(guān)文章

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

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

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

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

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

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

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

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

    wing324 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<