本文已發布在西瓜君的個人博客,原文傳送門 前言 寫這一篇的時候,西瓜君查閱了很多資料和文章,但是相當多的文章寫的都很簡單,甚至互相之間有矛盾,這讓我很困擾;同時也讓我堅定了要寫出一篇好的關於JS異步、單線程、事件循環的文章,下面,讓我們一起來學習本文吧,沖鴨~~ 單線程 1. 什么是單線程 ...
本文已發布在西瓜君的個人博客,原文傳送門 作用域 JS中有兩種作用域:全局作用域 局部作用域 栗子 name定義在全局,在全局可以訪問到,所以 打印能夠正確打印 在函數fun中,如果沒有定義name屬性,那么會到它的父作用域去找,所以 也能正確打印。 內部環境可以通過作用域鏈訪問所有外部環境,但外部環境不能訪問內部環境的任何變量和函數。類似單向透明,這就是作用域鏈,所以 不行而 可以。 那么問題來 ...
2019-11-25 09:22 2 329 推薦指數:
本文已發布在西瓜君的個人博客,原文傳送門 前言 寫這一篇的時候,西瓜君查閱了很多資料和文章,但是相當多的文章寫的都很簡單,甚至互相之間有矛盾,這讓我很困擾;同時也讓我堅定了要寫出一篇好的關於JS異步、單線程、事件循環的文章,下面,讓我們一起來學習本文吧,沖鴨~~ 單線程 1. 什么是單線程 ...
前言 本篇文章比較適合3年以上的前端工作者,JS三座大山分別指:原型與原型鏈,作用域及閉包,異步和單線程。 原型與原型鏈 說到原型,就不得不提一下構造函數,首先我們看下面一個簡單的例子: 首先創造空的對象,再讓this指向這個對象,通過this.name進行賦值,最終返回 ...
在學習閉包之前我們很有必要先了解什么是作用域鏈 一、作用域鏈 作用域鏈是保證對執行環境有權訪問的所有變量和函數的有序訪問。 這句話其實還是蠻抽象的,但是通過下面一個例子,我們就能清楚的了解到作用域鏈了。 以上代碼涉及了3個執行環境:全局環境、changeColor()局部 ...
名字沖突。 變量(數據)js中,變量的作用域有兩中,一種是全局作用域(全局變量) ,一種局部作用域( ...
作用域在JS中同樣也是一個重要的概念。它不復雜,因為ES5中只有全局作用域和函數作用域,我們都知道他沒有塊級作用域。但在ES6中多了一個let,他可以保證外層塊不受內層塊的影響。即內層塊形成了一個塊級作用域,這是let的一個特點。它不簡單,因為在許多的函數嵌套的情景下,只有對它理解深刻 ...
在之前我們根絕對象的原型說過了js的原型鏈,那么同樣的js 萬物皆對象,函數也同樣存在這么一個鏈式的關系,就是函數的作用域鏈 作用域鏈 首先先來回顧一下之前講到的原型鏈的尋找機制,就是實例會先從本身開始找,沒有的話會一級一級的網上翻,直到頂端沒有就會報一個undefined 同樣的js的機制 ...
什么是閉包? 簡單理解,當在一個函數的外部訪問函數內部定義的變量的時候就會形成一個閉包,由這個理解可以知道,當一個函數執行完成的時候,一般情況下,其作用域會被銷毀,其內部定義的變量也會變得不可訪問,所以閉包打破了這個現象。閉包造成一個函數執行完成之后,其創建的作用域不會被銷毀,因為它被函數外部 ...
作用域的嵌套將形成作用域鏈,函數的嵌套將形成閉包。閉包與作用域鏈是 JavaScript 區別於其它語言的重要特性之一。 作用域 JavaScript 中有兩種作用域:函數作用域和全局作用域。 在一個函數中聲明的變量以及該函數的參數享有同一個作用域,即函數作用域。一個簡單的函數作用域的例子 ...