变量声明
Q:声明分类有哪几种?
- A:var声明、let与const声明和函数声明。
Q:变量声明与函数声明变量名相同,谁会生效?
-
A:函数声明高于一切
foo();
function foo() {
console.log('foo');//foo
}
var foo = 2;
Q:多个函数声明同一个变量名,谁会生效?
-
A:有多个函数声明的时候,是由最后面的函数声明来替代前面的
foo();
function foo() {
console.log('1');
}
function foo() {
console.log('2');//输出
}
Q:声明变量时发生了什么?
-
A:干了两件事
- 编译器在当前作用域中声明一个变量
xxx
- 运行时引擎在作用域中查找该变量,找到了
xxx
变量并为其赋值
var name = 'iceman'
//实际上发生了两件事
var name=undefinded;
name='iceman'; - 编译器在当前作用域中声明一个变量
Q:use strict
状态下,变量不声明会发生什么?
-
A:将抛出一个引用错误
ReferenceError
。function getAge() {
'use strict'
age = 21
console.log(age)//ReferenceError
}
getAge()
Q:使用var多次声明同一个变量,谁会生效?
-
A:使用
var
关键字,你可以用相同的名称声明多个变量。然后变量将保存最新的值。var num = 8
var num = 10
console.log(num)//10