首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

前端面试什么样的回答才能让面试官满意_2023-03-01

JS 隐式转换,显示转换 一般非基础类型进行转换时会先调用 valueOf,如果 valueOf 无法返回基本类型值,就会调用 toString 字符串和数字 "+" 操作符,如果有一个为字符串,那么都转化到字符串然后执行字符串拼接...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...将这个空对象的隐式原型(__proto__),指向构造函数的prototype属性。 让函数内部的this关键字指向这个对象。开始执行构造函数内部的代码(为这个新对象添加属性)。.....innerArgs) { // 第一种情况 :若是将 bind 绑定之后的函数当作构造函数,通过 new 操作符使用,则不绑定传入的 this,而是将 this 指向实例化出来的对象

32920

这些 JavaScript 细节,你知道不?

显示强制类型转换 日期显示转换为数字: 使用 Date.now() 来获得当前的时间戳,使用 new Date(..).getTime() 来获得指定时间的时间戳。...~ 和 indexOf() 一起可以将结果强制类型转换(实际上仅仅是转换)为真 / 假值: var a = "Hello World"; ~a.indexOf("lo"); // -4 强制类型转换 ES6 允许从符号到字符串的显式强制类型转换,然而隐式强制类型转换会产生错误,具体的原因不在本书讨论范围之内。...因此,没有这样的引用,你就无法关联错误处理函数来可靠地检查错误。 单一值 根据定义,Promise 只能有一个完成值或一个拒绝理由。...一般的建议是构造一个值封装(比如一个对象或数组)来保持这样的多个信息。这个解决方案可以起作用,但要在 Promise 链中的每一步都进行封装和解封,就十分丑陋和笨重了。

45730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    《你不知道的JavaScript》:this 绑定规则

    } var obj = { a: 2, fn: fn } var a = 1; bar( obj.fn ); // 1 将obj.fn作为回调函数传入 bar() 函数中,其实我的理解就是把函数...那就是用显示绑定,用函数的call或apply方法来强制绑定this。当然,这两个家伙的坑也是能埋人的… 首先这两个方法也有兼容性敢信?...fn.call(),可以在函数fn调用时强制把它内部的this绑定到obj对象上面。...如果传入的第一个参数是一个原始值(字符串类型、数字类型或布尔类型)来当作this的绑定对象,这个原始值就会被转换成它的对象形式(也就是 new String(...)...当使用 new 关键字来发生构造函数调用时,会自动执行如下过程: 创建(或是构造)一个全新的对象。 这个新对象会被执行原型连接。 这个新对象会被绑定到函数调用的this。

    52930

    美团前端一面高频面试题

    对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。...如果有并且返回基本类型值,就使用该值进行强制类型转换。如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。

    64530

    《你不知道的JavaScript》-- this(笔记)

    如果不想在对象内部包含函数引用,而想在某个对象上强制调用函数,可以使用函数的 call(...) 和 apply(...)方法。...如果传入了原始值(字符串类型、布尔类型或数字类型)来当作 this 的绑定对象,这个原始值会被转换成它的对象形式(也就是 new String(...)、new Boolean(...)...绑定例外 4.1 被忽略的 this 如果把 null 或 undefined 作为 this 的绑定对象传入 call、apply 或者 bind,这些值调用时会被忽略,实际应用的是默认绑定规则: function...4.3 软绑定 硬绑定可以把 this 强制绑定到指定的对象(除了使用 new 时),防止函数调用应用默认绑定规则,问题是硬绑定会大大降低函数的灵活性,使用硬绑定之后就无法使用隐式绑定或显示绑定来修改...--箭头函数,箭头函数不是使用 function 关键字定义的,是使用被称为“胖箭头”的操作符 “=>” 定义的,箭头函数不使用 this 的四种标准规则,而是根据外层(函数或全局)作用域来决定 this

    30220

    金九银十前端面试题总结(附答案)

    Java和C++等语言都是强制类型定义的,也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。...比如JavaScript是弱类型定义的,在JavaScript中就可以将字符串'12'和整数3进行连接得到字符串'123',在相加的时候会进行强制类型转换。...将函数作为上下文对象的一个属性。使用上下文对象来调用这个方法,并保存返回结果。删除刚才新增的属性。返回结果。...将函数作为上下文对象的一个属性。判断参数值是否传入使用上下文对象来调用这个方法,并保存返回结果。...创建一个函数返回函数内部使用 apply 来绑定函数调用,需要判断函数作为构造函数的情况,这个时候需要传入当前函数的 this 给 apply 调用,其余情况都传入指定的上下文对象。

    77840

    174道JavaScript 面试知识点总结(上)

    如果某次 计算返回了正或负的 Infinity 值,那么该值将无法参与下一次的计算。判断一个数是不是有穷的,可以使用 isFinite 函数 来判断。 14、 typeof NaN 的结果是什么?...(3)Number 类型的值直接转换,不过那些极小和极大的数字会使用指数形式。 (4)Symbol 类型的值直接转换,但是只允许显式强制类型转换,使用隐式强制类型转换会产生错误。...如果有并且返回基本类型值,就使用该值进行强制类型转换。如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。...(3)第三种方式是组合继承,组合继承是将原型链和借用构造函数组合起来使用的一种方式。通过借用构造函数的方式来实现类型的属性的继承,通过将子类型的原型设置为超类型的实例来实现方法的继承。...后面提出了对象写法,通过将函数作为一个对象的方法来实现,这样解决了直接使用函数作为模块的一些缺点,但是这种办法会暴露所 有的所有的模块成员,外部代码可以修改内部属性的值。

    1.7K10

    前端面试比较好的回答_2023-02-27

    call/apply/bind 的实现 call 描述:使用 一个指定的 this 值(默认为 window) 和 一个或多个参数 来调用一个函数。...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...,在 bind() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。...将这个空对象的隐式原型(__proto__),指向构造函数的prototype属性。 让函数内部的this关键字指向这个对象。开始执行构造函数内部的代码(为这个新对象添加属性)。

    59330

    前端高频面试题(三)(附答案)

    ()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有构造函数生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor;6、...一般使用反向代理后,需要通过修改 DNS 让域名解析到代理服务器 IP,这时浏览器无法察觉到真正服务器的存在,当然也就不需要修改配置了。...,最后激活 JS 引擎并继续执行若有频繁的 DOM API 调用,且浏览器厂商不做“批量处理”优化, 引擎间切换的单位代价将迅速积累若其中有强制重绘的 DOM API 调用,重新计算布局、重新绘制图像会引起更大的性能消耗...例如 eval()、parseFloat()、parseInt() 等(3)基本对象,基本对象是定义或使用其他对象的基础。基本对象包括一般对象、函数对象和错误对象。...当对象的属性和监听函数设置完成后,最后调用 sent 方法来向服务器发起请求,可以传入参数作为发送的数据体。

    43420

    分享 100 道基础的前端面试题(附答案)

    如果某次 计算返回了正或负的 Infinity 值,那么该值将无法参与下一次的计算。判断一个数是不是有穷的,可以使用 isFinite 函数 来判断。...(3)Number 类型的值直接转换,不过那些极小和极大的数字会使用指数形式。 (4)Symbol 类型的值直接转换,但是只允许显式强制类型转换,使用隐式强制类型转换会产生错误。...如果有并且返回基本类型值,就使用该值进行强制类型转换。如果没有就使用 toString() 的返回值(如果存在)来进行强制类型转换。...js 中每一个函数都可以作为构造函数,只要一个函数是通过 new 来调用的,那么我们就可以把它称为构造函数。...(3)第三种方式是组合继承,组合继承是将原型链和借用构造函数组合起来使用的一种方式。通过借用构造函数的方式来实现类型的属性的继承,通过将子类型的原型设置为超类型的实例来实现方法的继承。

    4.5K60

    字节跳动最爱考的前端面试题:JavaScript 基础

    )左边的操作数 符号 不能被转换为数字 能被转换为布尔值(都是 true) 可以被转换成字符串 "Symbol(cool)" 宽松相等和严格相等 宽松相等允许进行强制类型转换,而严格相等不允许 字符串与数字...不会继承,因为根据 this 绑定四大规则,new 绑定的优先级高于 bind 显示绑定,通过 new 进行构造函数调用时,会创建一个新对象,这个新对象会代替 bind 的对象绑定,作为此函数的 this...箭头函数能当构造函数吗? 普通函数通过 function 关键字定义, this 无法结合词法作用域使用,在运行时绑定,只取决于函数的调用方式,在哪里被调用,调用位置。...(取决于调用者,和是否独立运行) 箭头函数使用被称为 “胖箭头” 的操作 => 定义,箭头函数不应用普通函数 this 绑定的四种规则,而是根据外层(函数或全局)的作用域来决定 this,且箭头函数的绑定无法被修改...箭头函数常用于回调函数中,包括事件处理器或定时器 箭头函数和 var self = this,都试图取代传统的 this 运行机制,将 this 的绑定拉回到词法作用域 没有原型、没有 this、没有

    1.4K20

    this怎么那么难呢?(接上篇-1)

    但是无论是直接在obj中定义还是先定义再添加为引用属性,这个函数严格来说都不属于obj对象。 然而,调用位置会使用obj上线文来引用函数,因此可以说函数调用时obj对象“拥有”或“包含”它。...无论之后如何调用函数bar,它总会手动在obj上调用foo。这种绑定是一种显示的强制绑定,即硬绑定。...在JS中,构造函数只是一些使用new操作符时被调用的函数。他们并不会属于某个类,也不会实例化一个类。实际上,他们甚至都不会说是一种特殊的函数类型,他们只是被new操作符调用的普通函数而已。...实际上并不存在所谓的“构造函数”,只有对于函数的“构造调用”。...new和call/apply无法一起使用,因此无法进行直接测试。

    30210

    阿里前端一面面试题(附答案)

    根据 ES5 规范,如果某个操作数是字符串或者能够通过以下步骤转换为字符串的话,+ 将进行拼接操作。...:强类型语言也称为强类型定义语言,是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。...Java和C++等语言都是强制类型定义的,也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。...比如JavaScript是弱类型定义的,在JavaScript中就可以将字符串'12'和整数3进行连接得到字符串'123',在相加的时候会进行强制类型转换。...Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。

    66820

    前端经典面试题(有答案)

    中第二个whileif三元表达式|| (逻辑或) && (逻辑与)左边的操作数符号不能被转换为数字能被转换为布尔值(都是 true)可以被转换成字符串 "Symbol(cool)"宽松相等和严格相等宽松相等允许进行强制类型转换...箭头函数能当构造函数吗?普通函数通过 function 关键字定义, this 无法结合词法作用域使用,在运行时绑定,只取决于函数的调用方式,在哪里被调用,调用位置。...(取决于调用者,和是否独立运行)箭头函数使用被称为 “胖箭头” 的操作 => 定义,箭头函数不应用普通函数 this 绑定的四种规则,而是根据外层(函数或全局)的作用域来决定 this,且箭头函数的绑定无法被修改...箭头函数常用于回调函数中,包括事件处理器或定时器箭头函数和 var self = this,都试图取代传统的 this 运行机制,将 this 的绑定拉回到词法作用域没有原型、没有 this、没有 super...] 方法,创建一个实例对象,然后再执行这个函数体,将函数的 this 绑定在这个实例对象上当直接调用时,执行 [Call] 方法,直接执行函数体箭头函数没有 [Construct] 方法,不能被用作构造函数调用

    50440

    如果才能做好准备好前端面试

    = Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...= Symbol('fn'); // 创造唯一的key值,作为构造的context内部方法名 context[fn] = this; // 为 context 绑定原函数(this)...() 被调用时,这个新函数的 this 被指定为 bind() 的第一个参数,而其余参数将作为新函数的参数,供调用时使用。...将这个空对象的隐式原型(__proto__),指向构造函数的prototype属性。让函数内部的this关键字指向这个对象。开始执行构造函数内部的代码(为这个新对象添加属性)。...中第二个whileif三元表达式|| (逻辑或) && (逻辑与)左边的操作数符号不能被转换为数字能被转换为布尔值(都是 true)可以被转换成字符串 "Symbol(cool)"宽松相等和严格相等宽松相等允许进行强制类型转换

    46820

    类继承

    Note: string类有⼀个将const char *作为 参数的构造函数,使⽤C-⻛格字符串初始化string对象时,将⾃动调⽤这 个构造函数 1.公共继承: class Son : public...⽤或指针被称为向上强制转换(upcasting),这使公有继承不需要进⾏显式类型转换。...将基类指针或引⽤转换为派⽣类指针或引⽤——称为向下强制转换(downcasting)。 如果不使⽤显式类型转换,则向下强制转换是不允许的。原因是is-a关系通常是不可逆的。...派⽣类可以新增数据成员,因此使⽤这些数据成员的类成员函数不能应⽤于基类。 对于使⽤基类引⽤或指针作为参数的函数调⽤,将进⾏向上转换。...隐式向上强制转换使基类指针或引⽤可以指向基类对象或派⽣类对象,因此需要动态联编 4.2虚成员函数和动态联编 BrassPlus ophelia; //drived-class object Brass

    1.3K30

    夯实JavaScript知识点一文足矣

    目录: 基本类型和引用类型 类型判断 强制类型转换 作用域 执行上下文 理解函数的执行过程 this 指向 闭包 原型和原型链 js 的继承 event loop 基本类型和引用类型 js中数据类型分为基本类型和引用类型...当发生引用类型强制转基本类型的操作时,就会触发内置的Symbol.toPrimitive函数,当然也可以给对象手动添加Symbol.toPrimitive函数来覆盖默认的强制类型转换行为。...instanceof本质上是判断右边的构造函数的prototype对象是否存在于左边的原型链上,是的话返回true。...强制类型转换 JS 是弱类型语言,不同类型之间在一定情况下会发生强制类型转换,比如在相等性比较的时候。 基本类型的相等性比较的是值是否一样,对象相等性比较的是内存地址是否相同。...因为根本无法找到他们的内存地址的指针。所以[] == []是false。 对于[] == ![],因为涉及到强制类型转换,所以复杂的多了。想要更加详细了解强制类型转换可以看我这篇文章 。

    53030

    为了面试能通过,我要看完这75道面试题(下)

    原因是基本类型的值被临时转换或强制转换为对象,因此name变量的行为类似于对象。 除null和undefined之外的每个基本类型都有自己包装对象。...隐式和显式转换有什么区别)? 隐式强制转换是一种将值转换为另一种类型的方法,这个过程是自动完成的,无需我们手动操作。 假设我们下面有一个例子。...第三个console.log语句结果12,它将'2'转换为一个数字,然后乘以6 * 2,结果是12。 而显式强制是将值转换为另一种类型的方法,我们需要手动转换。...NaN表示“非数字”是 JS 中的一个值,该值是将数字转换或执行为非数字值的运算结果,因此结果为NaN。...(箭头函数是匿名的) 使用函数作为构造函数时(箭头函数没有构造函数) 当想在对象字面是以将函数作为属性添加并在其中使用对象时,因为咱们无法访问 this 即对象本身。

    2.4K10

    JavaScript 进阶

    核心: 标记清除算法将“不再使用的对象”定义为“无法达到的对象”。 就是从根部(在JS中就是全局对象)出发定时扫描内存中的对象。 凡是能从根部到达的对象,都是还需要使用的。...静态成员: 在 JavaScript 中底层函数本质上也是对象类型,因此允许直接为函数动态添加属性或方法,构造函数的属性和方法被称为静态成员。...一般公共特征的属性或方法静态成员设置为静态成员 静态成员方法中的 this 指向构造函数本身 内置构造函数 在 JavaScript 中最主要的数据类型有 6 种,分别是字符串、数值、布尔、undefined...false(重点) 实例方法 toUpperCase 用于将字母转换成大写 实例方法 toLowerCase 用于将就转换成小写 实例方法 indexOf 检测是否包含某字符 实例方法 endsWith...检测是否以某字符结尾 实例方法 replace 用于替换字符串,支持正则匹配 实例方法 match 用于查找字符串,支持正则匹配 注:String 也可以当做普通函数使用,这时它的作用是强制转换成字符串数据类型

    1.2K20
    领券