var
关键字,声明一个 function scope
变数let
关键字,声明一个 block scope
变数const
关键字,声明一个 block scope
常数console.log('用var关键字 定义变数')
var i='全域变数';
console.log(`i=${i}`);
//`i=${i}` 等价於 'i='+i 字串连接
// ` 反引号在~键上面 (我一开始还找不到,所以特别写这行)
console.log("I'm in the function")
function fun(){
var i='function内变数';
console.log(`i=${i}`)
};
fun();
console.log("I'm out of the function")
console.log(`i=${i}`);
console.log("I'm in the for loop")
for(var i=0;i<5;i++){
console.log(`i=${i}`)
} //i=5离开for回圈
console.log("I'm out of the for loop")
console.log(`i=${i}`);
甚麽是 function scope
,讲人话就是:
var
关键字令出的变数,他的有效范围以function
界定。
function
外,听 全域window
的function
内,听function
的,function
内找不到变数,才往全域window
找好的,那我们现在来对一下刚刚上面的答案。
用var关键字 定义变数
i=全域变数
I'm in the function
i=function内变数
I'm out of the function
i=全域变数
I'm in the for loop
i=0
i=1
i=2
i=3
i=4
I'm out of the for loop
i=5
离开for loop
後,我们再次呼叫变数i
,得到的答案是:5。
原因是for loop
不是function
,会影响到在全域
用var
定义的变数i
。
为了解决这个问题,我们有了let
和const
,他们的变数有效范围以 {}
界定。来看看他的效果~
console.log('用let关键字 定义变数')
let k='全域变数';
console.log(`k=${k}`);
console.log("I'm in the function")
function fun(){
let k='function内变数';
console.log(`k=${k}`)
};
fun();
console.log("I'm out of the function")
console.log(`k=${k}`);
console.log("I'm in the for loop")
for(let k=0;k<5;k++){
console.log(`k=${k}`)
}
console.log("I'm out of the for loop")
console.log(`k=${k}`)
用let关键字 定义变数
k=全域变数
I'm in the function
k=function内变数
I'm out of the function
k=全域变数
I'm in the for loop
k=0
k=1
k=2
k=3
k=4
I'm out of the for loop
k=全域变数
这次我们离开for loop
後,我们再次呼叫变数i
,得到的答案是:全域变数。
因为变数i
是用let
定义的,他的变数有效范围靠{}
界定,而for loop
就有{}
。
let、const不能重复宣告,会报错
var a=1
var a="haosjdoija";
let a=1
let a="haosjdoija";
//Uncaught SyntaxError: Identifier 'a' has already been declared
<<: Day21:Hot Flow - SharedFlow
>>: [Day 21] Leetcode 560. Subarray Sum Equals K (C++)
昨天学了toggle,今天学stack以及如何做切换页面。 正文 stack stack用来排版用的...
rules of operator precedence 简单的小概念就是运算子(operator)...
[Day 26] Batch Processing (3-2) - MapReduce Map-Si...
某间面包店的面包师傅想研究不同配方做出的面包所销售出的差异,但依照部烤箱的不同温度又会有所不同,故想...
Facenet 是google在2015於CVPR所发表的,提出在特徵空间里做出识别、验证的问题,只...