|前端面试题--day01
text":"1.预编译分为作用域创建阶段以及预编译阶段
1.2预编译的时候做了哪些事情【|前端面试题--day01】例子:
function fn (a c) {
console.log(a)//function a(){
var a = 123
console.log(a)//123
console.log(c)//function c(){
function a () {
if (false) {
var d = 678
console.log(d)//undefined
console.log(b)//undefined
var b = function () { //表达式
console.log(b)//function(){
function c () {
console.log(c)//function c(){
fn(1 2)
- 创建ao对象
全称:active Object活动对象 , 保存函数调用时的局部变量 , 其实AO对象就是函数作用域对象
AO:{ - 找形参和变量声明 , 作为ao对象的属性名 值是undefined
AO:{
a:undefined
c:undefined
d:undefined
b:undefined - 实参和形参相统一
AO:{
a:undefined -->1
c:undefined -->2
d:undefined
b:undefined - 找函数声明(不是表达式如:a=function(){) , 会覆盖变量的声明
a:undefined -->1 -->function a(){
c:undefined -->2 -->function c(){
d:undefined
b:undefined
- 整个程序实际运行如下
function fn (a c) {
//第一步找形参和变量声明 , 作为ao对象的属性名 值是undefined
var a;//undefined
var d;//undefined
var b;//undefined
var c;//undefined
//第二步实参和形参相统一
a = 1
c = 2
//第三步找函数声明 , 会覆盖变量的声明
a = function a () {
c = function c () {
//接下来就按原代码顺序执行
console.log(a)//function a(){
a = 123
console.log(a)//123
console.log(c)//function c(){
function a () {
if (false) {
d = 678
console.log(d)//undefined
console.log(b)//undefined
b = function () { //表达式
console.log(b)//function(){
function c () {
console.log(c)//function c(){
fn(1 2)
- 全局作用域或者普通函数中this指向全局对象window 。 定时器里的this指向window
- 对象中的方法谁调用this指向谁
- 构造函数中this指向构造函数实例
var a = {
name: 111
say: function () {
console.log(this.name)
var fun = a.say
fun()//fun.call(window)===222
a.say()//a.say.call(a)===111
var b = {
name: 333
say: function (fun) {
fun()
b.say(a.say)//在b.say中调用a.say方法 , 此时fun()的调用者为window相当于fun.call(window)===222
b.say = a.say//b.say为function(){console.log(this.name)
b.say()//因为b.say的值已改变所以this指向为b相当于b.say.call(b)===333
2.1箭头函数中的this
- 箭头函数不绑定this关键字 , 箭头函数中的this指向的是函数定义位置的父执行上下文this , 箭头函数内部this值只能通过查找作用域链 , 同时也不能用作构造函数
- 例如:箭头函数本身所在的对象为obj , 而obj的父执行上下文(作用域)为window因此输出为11(obj作用域于window所以箭头函数this指向于window)
var x=11
var obj={
x:22
say:()=>{- 5G|关于5G,华为赢了
- 封顶|雄安新区:城市计算(超算云)中心提前完成主体结构封顶
- 迈克尔·杰克逊 45 度前倾是怎么做到的?
- 封顶|雄安新区:城市计算(超算云)中心提前完成主体结构封顶
- GitHub|目前最值得入手的三款鸿蒙手机,全部都在降价,最后一款仅1239元
- 玉兔二号发现的“神秘小屋”前不久|玉兔二号拍到的月球背面的房子到底是什么,终于揭晓了
- 支付宝集五福活动 1 月 19 日正式开始,现可提前领福
- 腾讯|前腾讯员工爆料:鹅厂的末位淘汰制让人心理崩溃!
- |为什么以前在飞机上不能开手机,而现在可以了?
- 快来领取随日本亿万富翁进行月球旅行的免费入场券!仅限前8人