麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

JavaScript 代碼預解析/變量和函數的聲明

2019-11-06 06:02:31
字體:
來源:轉載
供稿:網友

1. 代碼預解析

所謂預解析,指的是在執行之前對代碼的分析,檢查看是否有錯誤,然后對變量進行提升。因此在預解析的時候,js 引擎做了兩件事,① 檢查語法是否有問題;② 提升聲明預解析的過程:① 當瀏覽器打開后,會讀取 html 等文件,同時讀取 js 的代碼,以字符串的形式進行讀取;② 在瀏覽器內部有一個被稱為 js 引擎的東西(v8 引擎),它會讀取該字符串,并將其解析成可以執行的代碼(javaScript 引擎 就是將 js 形式的字符串轉換為可以使用的代碼,可以執行的代碼的應用程序);③ 在解析的過程中,首先會將代碼通篇讀取一遍,這就是預解析。在預解析過程中檢查錯誤,出現錯誤就會報錯(注意不是異常),同時會將所有的聲明記錄下來;④ 在預解析沒有問題的時候,才會從頭開始一步一步的解釋執行代碼。

2. 什么是聲明

聲明的含義原本是,告知以讓大家都知道有什么存在。在 js 中的聲明是指:① 變量 ② 函數變量的聲明是讓計算機在使用某變量的時候,知道用什么東西;函數的聲明是讓計算機在調用函數的時候,知道執行什么代碼。
console.log(num);//報錯,num is not defined,此錯誤在執行時出現,而非預解析時出現如何聲明?(1)聲明變量
var num;注意:① 重復聲明無效② 如果變量賦值,沒有使用 var,那么會稱為全局變量(注意:嚴格模式中報錯)
"use strict"; //嚴格模式③ 連續聲明多個變量時一定要注意符號
var num1, num2, num3, num4;//不要少了符號var num1 = 1,num1 = 1,num1 = 1,num1 = 1;(2)函數聲明
function 函數名() {    // 函數聲明}同時需要注意:函數聲明必須獨立于語句,成為一個單獨的代碼結構,只允許出現在全局范圍內函數中的全局范圍內
if(1){    function f() {        //不是聲明    }}
function foo(){    function f() {        //在函數內聲明    }}

3. 什么是記錄聲明

(1)代碼片段1
foo();function foo() {    console.log('ok');}代碼在執行之前會先預解析,檢查到有函數聲明,因此在執行代碼之前,js 引擎就知道有函數 foo 了,因此在執行代碼時調用 foo 就不會報錯。(2)代碼片段2
foo();//foo is not defined+function foo() {    console.log('ok');}函數不是一個獨立的存在,是一個和 + 連接的表達式,因此在預解析的時候沒有檢查到聲明,因此瀏覽器不會記錄函數,在第一次調用的時候就會出現錯誤。(3)代碼片段3
foo();//foo is not a functionvar foo = function () {    console.log('ok');};在代碼執行之前,預解析檢查到有 foo 聲明(變量),因此記錄變量 foo在代碼執行的第一句調用函數(此時還未賦值),報錯,foo不是一個函數(4)在預解析的時候,記錄聲明由兩部分構成① 如果是變量聲明,那么就記錄下變量名,并且將其值確定為 undefined② 如果是函數聲明,要記錄函數名和函數體首先在內存記錄下有一個名字,和變量名的聲明此時的規則是一樣的;緊接著記錄下函數體,將函數名和函數體聯系在一起練習:
console.log(a);//打印函數體a();//'a'var a = 10;a();//報錯,a is not functionfunction a(){    console.log('a');}a();//報錯,a is not functionconsole.log(a);//10代碼分析:① 預解析,檢查到有聲明,變量與函數首先預解析到有變量a存在,因此記錄下a這個名字,和其值undefined;接著預解析到有函數a聲明,記錄下函數名a,但是發現已經記錄了一個a,因此該操作無效,將函數體與a這個名字相關聯,解析完畢。② 開始逐步執行代碼賦值語句,執行給a重新賦值為10,將存儲的關聯函數覆蓋;執行console.log打印,打印出a的值,由于a中存儲的是數字10,因此打印10③ 分析完代碼后,將上述代碼轉換成下列形式(注意:不是所有代碼都可以這樣轉換)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本人乱人乱亲乱色视频观看 | 草久影院 | 视频一区二区三区在线播放 | 国产精品色综合 | 欧美激情精品久久久久久久久久 | 久久精品探花 | 欧美日韩在线播放 | 中文字幕偷拍 | 欧美日韩手机在线观看 | 免费久久久久 | 91中文在线| 久久久久久久久久网 | 一级黄色片武则天 | 毛片视频免费观看 | 国产一区二区精彩视频 | 中文字幕国产日韩 | 国产成人精品一区在线播放 | 羞羞网站| 国产成人精品一区在线播放 | 特级毛片全部免费播放器 | 国产一区日韩一区 | 天天躁狠狠躁夜躁2020挡不住 | 欧美14一15sex性hd| 国产影院在线观看 | 手机在线看片国产 | 一本到免费视频 | 午夜视频中文字幕 | 国产精品久久久久久久久久东京 | 毛片大全在线观看 | 久久精品视频黄色 | 草草视频免费观看 | 黄色网址在线免费 | 国产美女的小嫩bbb图片 | 久久伊| 久久影院国产精品 | 小雪奶水翁胀公吸小说最新章节 | 久久久久久久爱 | 康妮卡特欧美精品一区 | 亚洲视屏在线 | 久久一本日日摸夜夜添 | 成人激情综合网 |