1. document对象 && window对象
所有的全局函数和对象都属于window
对象的属性和方法。
区别:
-
window
指窗体。window
对象表示浏览器中打开的窗口。 -
document
指页面。document
是window
的一个子对象、一个对象属性。
2. var与let、const的区别
2.1 var声明变量存在变量提升,let和const不存在变量提升
什么是变量提升?
JavaScript
中,函数及变量的声明都将被提升到函数的最顶部。
JavaScript
中,变量可以在使用后声明,也就是变量可以先使用再声明。
console.log(a); // undefined ===> a已声明还没赋值,默认得到undefined值
var a = 100;
console.log(b); // 报错:b is not defined ===> 找不到b这个变量
let b = 10;
console.log(c); // 报错:c is not defined ===> 找不到c这个变量
const c = 10;
再来看这段代码
function fn() {
//var a
if (true) {
console.log(a + ' now')
}
else {
var a = 1
console.log(2)
}
}
fn() // a -> undefined
我们发现不执行的代码也会影响会执行的代码,因为var a
会提升到if
语句的前面。
undefined
可以翻译为不明确,not defined
可以翻译为未定义
在Java
中变量分为全局变量(成员变量)或者局部变量,在方法体中定义的变量都是局部变量,否则是全局变量(即在方法体外,在类中定义的变量)
在JavaScript
中,在方法体外外用var
定义的变量其它方法可以共享,在方法中用var
定义的变量只有该方法内生效。
2.2 let、const都是块级局部变量
顾名思义,就是只在当前代码块起作用
{
let a = 1
}
console.log(a) // undefined
const
的特性和 let
完全一样,不同的只是:
1)声明时候必须赋值
const a
编译器报错
控制台报错
SyntaxError: Missing initializer in const declaration
2)只能进行一次赋值,即声明后不能再修改
const a=1
a=2
编译器报错
控制台报错
TypeError: Assignment to constant variable.
3)如果声明的是复合类型数据,可以修改其属性
2.3同一作用域下let和const不能声明同名变量,而var可以
const a =2
const a=1
SyntaxError: Identifier 'a' has already been declared
网友评论