JS解析器的預解析機制

2021-10-05 22:18:49 字數 1141 閱讀 3954

預解析

函式要先定義後呼叫不是指**書寫順序

舉個栗子

函式的兩種字面量的定義方式:1

console.

log(

add())

;//1 console在前

function

add(no1,no2)

function

add(no1,no2)

//函式宣告不加;

console.

log(

add())

;// 1 console語句在後

結果都能正常列印1

下面是另外一種字面量定義的方式

2function宣告

console.

log(

add())

;// undefined console語句在前

varadd

=function()

;//語句加;

var 賦值表示式

var

add=

function()

; console.

log(

add())

;// 1 console語句在後正常

根本原因

瀏覽器的預解析機制

在全域性作用域找到`function  var` 這兩個關鍵字
找到function 函式宣告會將函式提前定義一遍,已經知道add是什麼玩意兒了,

找到varvar xx=undefined直到執行到賦值**才會改變初始定義的undefined預設值。

找到的下面語句

var  add =

function()

;

只會定義var add = undefined;

預解析機制

js在預解析階段先找所有宣告,如果是var 先給var後的變數定乙個undefind 如果是function 就把function當做字元創賦給函式名 如果名字形同的情況function會把覆蓋var 後面function會覆蓋前面function 1.定義 預解析 在當前作用域下,js執行之前,會...

js解析器的執行原理

首先看一段 我是span 的執行順序是從上往下的,當 執行到script標籤時,也就開始執行js 了。執行js 一般分兩步 1.預解析 2.逐行執行 預解析 呢,主要會把var function 引數等一些東西 儲存進倉庫裡面 記憶體 1.var 一般用於宣告變數,預解析 的時候,等號後面的賦值過程...

js解析器的執行原理

alert a var a 1 function a alert a var a 3 alert a function a alert a 上面 的執行順序是從上往下,當 執行到script標籤時,開始執行js 執行js 一般分兩步 1.預解析 2.逐行執行 第一步 預解析 預解析 主要會把var ...