|前端面试题--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:()=>{- 卫星拍摄下的南极洲,专家发现神秘骨架:人类又发现了史前物种
- ios16|一步到位能用5年,目前这3款手机能闭眼入,买手机不要太小气
- 最前线 | 腾讯游戏发布40余款产品与项目,《王者荣耀》发布全新规划
- 新发现恐龙可能在灾难性的太空岩石撞击地球之前就已经灭绝了
- 西伯利亚冻土层融化,出土4万年前的毛犀牛,科学家想将其复活!
- 西伯利亚冻土层融化,发现14300年前生物,人类也许该清醒了
- 华为|重磅级新品官宣:华为全屋智能2.0将于7月4日发布 前代39999元起
- 中美科学家在琥珀中发现1亿年前的虱子,它们以恐龙羽毛为食
- 潘博文|腾讯QQ回应用户号码被盗:目前受影响范围已得到控制
- Intel|26亿一台!ASML全新光刻机准备中:Intel提前锁定 冲击2nm工艺
