作用域概念預解析規則
作用域:在一定的空間、範圍、區域對內容進行讀寫!
瀏覽器 js解析器
1、會去找 var function引數等,
a=未定義 所有變數,在正式執行之前 ,都提前賦了乙個值 未定義;
fn1=function fn1() 所有的函式,在正式執行**之前,都是整個函式塊
這種叫做js 預解析 .預解析的時候,相同名字會覆蓋前面位置
2、逐行解讀** :表示式:= + - * / % ++!引數….. 表示式會更改 預解析的值
console.
log(a);//undefined
var a =
1; console.
log(a);//1
console.log(b);// function b()
var b = 1;
console.log(b);//1
functionb()
console.log
(b);
//1var b = 3;
console.log(b);//3
functionb()
console.log
(b);
//3 b()//報錯 此時a以經被更改為3
js支援函式作用域
js不支援塊級作用域(你可以自己閉包或其他方法實現),只支援函式作用域,函式呼叫時又會遵守預解析,變數的查詢是就近原則,去尋找var定義的變數
var a = 1;
function
fn1()
fn1();
console.log(a);//1
js作用域鏈
作用域鏈:當就近沒有找到的時候就去查詢外層。函式裡面的變數外面找不到.裡面找不到帶var的申明可以向外面找,遇到表示式會改預解析庫里的內容
var a = 1;
function
fn1()
fn1();
alert(a);//2
預解析中,碰到函式呼叫又會發生預解析#####`var a = 1;
function
fn1(a)
fn1();
alert(a);//1
var a = 1;
function
fn1(a)
fn1(a);
console.log(a);//1
面試必備 作用域 作用域鏈 預解析
1.變數分為區域性變數和全域性變數,2.作用域 就是變數的使用範圍 所以,作用域也分為區域性作用域和全域性作用域 3.js中沒有塊級作用域,也就是說 一對大括號 定義的變數,這個變數可以在大括號外面使用。栗子1 栗子2 栗子3 4.函式中定義的變數是區域性變數 5.作用域鏈 變數的使用,從裡向外,層...
2 0 作用域和預解析
一 作用域份為全域性作用域和區域性作用域 作用域不僅有有變數作用域還有函式作用域 var a 10 a是全域性作用域 在 都能訪問和修改 function fn console.log b 這裡b是不存在的 會報function fn say 可以呼叫 fn console.log a 報錯 say...
js 函式 作用域 預解析
一 函式 定義 可以重複呼叫執行的 塊 一 函式的宣告和呼叫 1.宣告函式 1 命名函式 語法 function 函式名 2 函式表示式來宣告函式 匿名函式 語法 var 變數名 function eg var fun function fun 使用變數名來呼叫函式 2.呼叫函式 函式名 二 函式的...