一些JS概念
Posted yingmhd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些JS概念相关的知识,希望对你有一定的参考价值。
变量提升
JS引擎的工作方式:先解析代码,获取所有被声明的变量,然后再一行一行的运行
console.log(a) // undefined
var a = 2
相当于
var a
console.log(a)
a = 2
这就是变量提升
函数声明也会提升,并且优先于表达式
getName() // 1
function getName() {
console.log(\'1\')
}
var getName = function() {
console.log(\'2\')
}
getName() // 2
暂时性死区
ES6的let\\const
不会变量提升
typeof a // ReferenceError: a is not defined
let a
因为let
不会变量提升,所以在声明前调用会报错
let x = \'outer value\'
!(function(){
console.log(x) // Cannot access \'x\' before initialization
let x = \'inner value\'
})()
ES6规定,let/const
命令会使区块形成封闭的作用域,在这个作用域下,从进入到变量可以访问之间的一段时间,就称之为暂时性死区,在暂时性死区,该变量都是不可用的
this指向
- 单独使用,指向全局对象
window
,严格模式下,指向undefined
函数内部,函数执行时才能确定
function f() { var user = "星辰大海"; console.log(this.user); // undfined console.log(this); // Window } f();
方法中,this指向调用方法的对象
var a = 18; var obj = { a: 19, b: { a: 20, c: function () { console.log(this.a); } } } obj.b.c(); // 20
以上是关于一些JS概念的主要内容,如果未能解决你的问题,请参考以下文章