js高程及其面试题

本文列举了2020年大厂面试中关于JavaScript的高阶题目,包括作用域链、作用域、函数柯里化、函数式编程、原型链、重写call和bind方法。通过对这些面试题的解析,帮助读者深入理解JavaScript的核心概念和技术。
摘要由CSDN通过智能技术生成

2020年出现的大厂面试题

面试题1:作用域链

var x = 1;
function func(x, y = function anonymous1() {
   x = 2}) {
   
    x = 3;
    y();
    console.log(x); // 1
}
func(5);
console.log(x); // 1

1.函数func作用域内的变量是私有的,形参赋值x=5,私有赋值x=3,anonymous1函数的作用域链是func,所以函数y()执行会改变x=2,第一个console.log(x)打印2
2.全局作用域,第二个打印数值 x=1

在这里插入图片描述

面试题2:作用域

var x = 1;
function func(x, y = function anonymous1() {
   x = 2}) {
   
    var x = 3;
    y();
    console.log(x); //3
}
func(5);
console.log(x);//1
/*
es6中存在块级作用域(只要{}[除对象之外的大括号] 出现let/const/function)

有一种情况也会产生
1.函数有形参赋值了默认值
2.函数体中有单独声明过某个变量
这样在函数运行的时候会产生两个上下文
第一个:函数执行形成的私有上下文EC(FUNC) => 作用域链/形参赋值/...
第二个:函数大括号包起来的就是块级上下文EC(BLOCK)
*/

/*
*EC(G)
*x=1
*func = AAAFFF000
*/
var x = 1;
function func(x, y = function anonymous1() {
   x = 2}) {
   
	/*
	*EC(FUNC)私有上下文
	*	作用域链:<EC(FUNC),EC(G)>
	*	x=5
	*	y=anonymous1  [[scope]]:EC(FUNC)
	*EC(BLOCK)块级上下文(上级上下文 EC(FUNC))
	*	变量提升 var x
	*	在代码没有执行之前,我们会把EC(FUNC)中的值也给它一份 x=5
	*/
    var x = 3; // 块级上下文中的x x=3
    y(); // 不是块级的y,向上级找 EC(FUNC)
    //anonymous1执行
    // 私有上下文EC(AN) 作用域链:<EC(AN),EC(FUNC)>
    // x = 2 修改的是EC(FUNC)中的2
    console.log(x); //3 块级上下文中的x,还是3
}
func(5);
console.log(x);//1
// 相应三道练习题
{
   
    function foo() {
   }
    foo = 1;
    // =>1
}
console.log(foo); // 函数
//-----------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值