SlideShare a Scribd company logo
Tommy Lin
林儀泰
FB/Email:tooto1985@gmail.com
 限制被宣告的變數有效存取範圍
◦ 函式內可以存取函式外的變數
存取函式外層變數
var a=100;
function run() {
var b=100;
console.log(a);
}
run();
存取函式外層變數
var a=100;
function run() {
var b=100;
console.log(a); //100
}
run();
 限制被宣告的變數有效存取範圍
◦ 函式內可以存取函式外的變數
◦ 函式外不可存取函式內的變數
存取函式內層變數
var a=100;
function run() {
var b=100;
}
run();
console.log(b);
存取函式內層變數
var a=100;
function run() {
var b=100;
}
run();
console.log(b); //undefined
 限制被宣告的變數有效存取範圍
◦ 函式內可以存取函式外的變數
◦ 函式外不可存取函式內的變數
 以函式來界定存取範圍(ES5)
函式界定範圍
var a=0;
function run() {
if(true) {
var a=1;
}
console.log(a);
}
run();
console.log(a);
函式界定範圍
var a=0;
function run() {
if(true) {
var a=1;
}
console.log(a);
}
run();
console.log(a); //0
函式界定範圍
var a=0;
function run() {
if(true) {
var a=1;
}
console.log(a); //1
}
run();
console.log(a); //0
 限制被宣告的變數有效存取範圍
◦ 函式內可以存取函式外的變數
◦ 函式外不可存取函式內的變數
 以函式來界定存取範圍(ES5)
◦ ES6支援以區塊界定範圍的宣告let
區塊界定範圍(ES6)
function run() {
var a = 0;
if(true) {
let a=1;
console.log(a);
}
console.log(a);
}
run();
區塊界定範圍(ES6)
function run() {
var a = 0;
if(true) {
let a=1;
console.log(a); //1
}
console.log(a);
}
run();
區塊界定範圍(ES6)
function run() {
var a = 0;
if(true) {
let a=1;
console.log(a); //1
}
console.log(a); //0
}
run();
 限制被宣告的變數有效存取範圍
◦ 函式內可以存取函式外的變數
◦ 函式外不可存取函式內的變數
 以函式來界定存取範圍(ES5)
◦ ES6支援以區塊界定範圍的宣告let
 必須是套崁函式並非引用函式
套崁函式
var a = 100;
function run() {
var b = 200;
function todo() {
console.log(b);
}
todo();
console.log(a);
}
run();
套崁函式
var a = 100;
function run() {
var b = 200;
function todo() {
console.log(b); //200
}
todo();
console.log(a);
}
run();
套崁函式
var a = 100;
function run() {
var b = 200;
function todo() {
console.log(b); //200
}
todo();
console.log(a); //100
}
run();
引用函式
var a = 100;
function todo() {
console.log(b);
}
function run() {
var b = 200;
todo();
console.log(a);
}
run();
引用函式
var a = 100;
function todo() {
console.log(b);
}
function run() {
var b = 200;
todo();
console.log(a); //100
}
run();
引用函式
var a = 100;
function todo() {
console.log(b); //undefined
}
function run() {
var b = 200;
todo();
console.log(a); //100
}
run();
 內層可以存取外層
 外層不可以存取內層
 函式界定存取範圍
 區塊界定存取範圍需使用let宣告(ES6)
 必須是套崁函式才可存取
 https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Statements/var
 https://developer.mozilla.org/en-
US/docs/Web/JavaScript/Reference/Statements/let

More Related Content

PPTX
5, workflow function activity
PDF
單元測試:Mocha、Chai 和 Sinon
PPTX
检查实现类
PPT
改善程序设计技术的50个有效做法
PPTX
PHPUnit + Xdebug 单元测试技术
PPT
揭开Javascript的面纱
PPTX
簡單介紹JavaScript參數傳遞
PPTX
簡單介紹JavaScript資料型態
5, workflow function activity
單元測試:Mocha、Chai 和 Sinon
检查实现类
改善程序设计技术的50个有效做法
PHPUnit + Xdebug 单元测试技术
揭开Javascript的面纱
簡單介紹JavaScript參數傳遞
簡單介紹JavaScript資料型態
Ad

簡單介紹JavaScript變數範圍