this指向面试题两则
2024-08-26 23:02:54
面试题1
let len = 10;
function fn() {
console.info(this.len)
}
fn(); // A
let Person = {
len: 5,
say: function() {
fn(); // B
arguments[0](); // C
}
}
Person.say(fn);
三处的输出结果均为 undefined
A 处执行结果
- fn 的 this 指向为 window
- let 声明的变量不挂载在 window 对象上
- 输出结果为:window.len = undefined;
B处的执行结果
- say 函数的 this 指向为 Person
- fn 的 this 指向依然为 window
- 输出结果依然为:window.len = undefined
C 处的执行结果
- arguments[0]() 相当于 arguments.fn()
- fn 的 this 指向为 arguments
- 输出结果为:arguments.len = undefined
面试题2
var length = 10;
function fn() {
console.info(this.length)
}
fn(); // A
let Person = {
len: 5,
say: function() {
fn(); // B
arguments[0](); // C
}
}
Person.say(fn);
分别输出 10, 10, 1
- A , B 处直接输出 挂载到 window 对象下的 10
- C 处输出 arguments.length = 1
最新文章
- 一键保存Feedly里的文章到有道笔记
- linux 查找文件的命令
- Java(二)
- Triangle leetcode
- 【OpenStack】OpenStack系列7之Nova详解
- [Objective-c 基础 - 2.5] NSString
- iOS内存管理系列之一:对象所有权与引用计数
- cocos2dx之lua项目开发中MVC框架的简单应用
- Dom编程(一)
- Value '0000-00-00' can not be represented as java.sql.Date
- LISTCTRL控件方法
- Http跨域时的Option请求
- Redis in .NET Core 入门:(5) Sorted SET
- 浏览器DOM事件触发
- JAVA中byte为负数处理
- 自己动手实现java数据结构(四)双端队列
- 【PAT】B1084 外观数列(20 分)(纯C)
- navicat连接mysql时出现2003(10060)错误
- 【Logstash系列】使用Logstash作为收集端采集IIS日志
- Linux more命令详解