欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript作用域實例

張光珊1年前7瀏覽0評論

JavaScript 作用域是指變量在什么地方和什么條件下能被訪問。

全局作用域是在 JavaScript 中最常見的作用域,它指的是所有函數和代碼塊都可以訪問到的變量。

var a = "hello";
function test(){
console.log(a);
}
test(); //輸出 "hello"

局部作用域指的是在函數或者代碼塊中聲明的變量,在函數或者代碼塊之外是無法訪問的。

function test(){
var a = "hello";
console.log(a);
}
test(); //輸出 “hello”
console.log(a); //輸出 "Uncaught ReferenceError: a is not defined"

函數作用域指的是在函數中聲明的變量,只能在函數內部被訪問到。

function test(){
var a = "hello";
function innerTest(){
console.log(a);
}
innerTest(); //輸出 “hello”
}
test();

作用域鏈是指一個變量從內部作用域向外部作用域查找的過程。

var a = "hello";
function outer(){
var a = "hi";
function inner(){
console.log(a); //先在內部作用域查找 a,輸出 "hi"
}
inner();
}
outer();

如果內部作用域沒有找到變量,會繼續在外部作用域繼續查找,直到找到全局變量或者抵達最外層作用域。

var a = "hello";
function outer(){
function inner(){
console.log(a); //在內部作用域和外部作用域都未找到變量 a,輸出 "hello"
}
inner();
}
outer();

閉包是指函數和其詞法環境的組合,可以在函數內部引用函數外部的變量。

function outer(a){
function inner(){
console.log(a); //在函數內部引用外部變量 a,輸出 "hello"
}
return inner;
}
var innerFunc = outer("hello");
innerFunc();

閉包可以用來隱藏變量或者函數,同時可以緩存計算結果避免重復計算。

function fibonacci(){
var cache = {};
return function(n){
if(n in cache){
return cache[n];
}else{
if(n < 2){
cache[n] = n;
return n;
}else{
cache[n] = fibonacci(n-1) + fibonacci(n-2);
return cache[n];
}
}
}
}
var fib = fibonacci();
console.log(fib(10)); //輸出 55,計算結果已被緩存

總之,JavaScript 作用域是非常重要的概念,對于變量和函數的訪問有著重要的影響。