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

前端面试题---JS部分

①创建一个对象,构造函数的this指向这个对象; ②这个新对象被执行[ [ 原型 ] ]连接; ③执行构造函数方法,属性方法被添加到this引用的对象; ④如果构造函数没有返回其它对象...首先创建一个对象obj,然后呢, 把这个对象的原型(__proto__)构造函数的原型对象(constructor.prototype)连接(说白了就是等于); 然后执行函数代码,就是这个新对象添加属性方法...访问一个变量,会到当前执行上下文中的作用域链中去查找,而作用域链的首端指向的是当前执行上下文的变量对象,这个变量对象是执行上下文的一个属性, 包含了函数的形参、所有的函数变量声明,这个对象的是代码解析的时候创建的...总结 解析预编译过程的声明提升可以提高性能,让函数可以执行时预先为变量分配栈空间 声明提升还可以提高JS代码的容错性,使一些不规范的代码也可以正常执行 函数是一等公民,函数声明与变量声明冲突...项目中:就是从目标对象或数组中提取自己想要的变量。最常用的场景是:element-ui,vant-ui按需引入,请求接口返回数据,提取想要数据

71820

使用 JavaScript 编写更好的条件语句

例如,一个游戏中,如果玩家生命点0,游戏结束。天气应用,如果在早上被查看,显示一个日出图片,如果是晚上,则显示星星月亮。...现在,如果我们想要检查任何其他动物,我们只需要添加一个新的数组项。 我们也能在这个函数作用域外部使用这个动物数组变量来代码的其他任意地方重用它。...这是一个编写更清晰、易理解维护的代码的方法,不是吗? 2. 提前退出 / 提前返回 这是一个精简你的代码的非常酷的技巧。记得当我开始专业工作第一天学习使用提前退出来编写条件。...默认参数确保如果我们传递undefined作为一个方法的参数,我们仍然有值可以解构,在这里它是一个对象{}。 通常,专业领域,代码被写在这两种方法之间。...我们还赋了一个对象 {} 作为默认值,因为执行 printVegetableName(undefined) 时会得到一个错误:不能从 undefined 或 null 解构属性 name ,因为

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

前端-5个小技巧让你写出更好的JS条件语句

,我们有: 1 个 if/else 语句来筛选无效的条件 3 层 if 语句嵌套(条件 1,2 & 3) 就个人而言,遵循的一个总的规则是发现无效条件尽早返回。...使用函数默认参数和解构 猜你也许很熟悉以下的代码 JavaScript 我们经常需要检查 null / undefined 并赋予默认值: function test(fruit, quantity...如果我们不这么做的话,执行 test(undefined) ,你会得到一个错误 Cannot destructure property name of 'undefined' or 'null'....,因为 undefined 上并没有 name 属性。(译者注:这里不太准确,其实因为解构适用于对象(Object),而不是因为undefined 上并没有 name 属性(对象上也没有)。...,但是就个人而言,看上去很冗长。

95430

【面试利器】原生JavaScript灵魂拷问,你能答上多少(一)

里方法 // 调用toString a.toString() // 返回[object Object] 复制代码 对象 a b 转换后的结果都是 [object Object],obj 对象添加了一个属性...string 类型 转化为 string 类型的本质:需要转换为string的部分调用自身的toString方法(null/undefined返回字符串格式的nullundefined) 被转换值对象...通过上面的学习,对象与其他元素相加对象会调用 toPrimitive 转化为原始值: 执行 toPrimitive,未传入 PreferredType,methodNames [valueOf...{} JavaScript ,不止可以作为对象定义,也可以作为代码块的定义。...友情提示:由于 {} 可以解释代码块的形式,有些需要注意的地方,举个栗子: 对象调用方法:{}.toString() 会报错 箭头函数返回对象:let getTempItem = id =>

86720

JavaScript注意点:Array.prototype.map

如果你想要一个 TLDR,在这个故事的结尾包含了一个简短的总结。...每个 Javascript 对象要么是真的,要么是假的。放置布尔上下文中,例如 if-else 语句,对象会根据其真实性被视为真或假。那么哪些对象是真的,哪些是假的呢?...令人困惑的是,这意味着字符串"false"、字符串"0"、对象{}数组[]都是真值。您可以通过将对象传递给布尔函数(例如Boolean("0");)来仔细检查这一点。...您可能已经注意到,我们的示例输入 11 ,parseInt 返回 3,这对应于上表的 Binary 列。...Map 是 Array 原型一个方法,返回将原始数组的每个元素传递给函数的结果的新数组。

1.1K10

2023的前端面试小结_2023-03-13

((0.1 + 0.2).toFixed(10))原型JavaScript对象都有一个特殊的 prototype 内置属性,其实就是对其他对象的引用几乎所有的对象创建 prototype 属性都会被赋予一个的值...JavaScript对象是引用类型的数据多个实例引用同一个对象,只要一个实例对这个对象进行操作,其他实例数据也会发生变化。...类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。ES6 提供了 Map 数据结构。...我们知道,调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置undefined值。所以 console.log(o); 会输出undefined。...也就是说,函数fun参数 n 的值是0,而返回的那个对象,需要一个参数n,而这个对象的作用域中没有n,它就继续沿着作用域向上一级的作用域中寻找n,最后函数fun中找到了n,n的值是0。

17010

前端面试必备ES6全方位总结

:首先声明了一个Symbol类型的变量symbol,一个对象a,通过Object.defineProperty()方法给a对象赋值web的字符串。...条件语句,函数声明语句,循环语句等的一对大括号中就是变量的块级作用域范围。 const声明一个只读的常量。const一旦声明常量,其值不能被改变。 constlet声明的块级作用域内有效。...默认值 es5函数的默认值设定是,通过“||”进行设定的,函数参数undefine,取默认值。 es6函数的默认值是写在参数定义的后面。...Promisefulfilled状态,调用then()方法的onfulfilled,Promiserejected状态,调用then()方法的onrejected。...Generator Generator是es6提供的一种异步编程解决方案,语法上,可以把理解一个状态机,内部封装了多种状态。 执行Generator,会生成并返回一个遍历器对象

1.2K30

JavaScript

nullundefined null表示值是,一般需要指定或清空一个变量才会使用,如 name=null; undefined表示声明一个变量但未初始化时,该变量的默认值是undefined。...还有就是函数无明确的返回返回的也是undefined。     null表示变量的值是undefined则表示声明了变量,但还没有赋值。     还不明白,上图吧!...JavaScript对象是拥有属性方法的数据。     我们在学习基本数据类型的时候已经带大家了解了,JavaScript的Number对象、String对象、Array对象等。     ...){ case 1: case 2: case 3: console.log("c"); //变量值1,2,3的任何一个,都会在控制台打印出c break; default:...类似于python的面向对象,了解一下就可以了 注意: ES6提供了Map数据结构。类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当做键。

1.3K20

分享几个js小技巧

,我们有: 1 个 if/else 语句来筛选无效的条件 3 层 if 语句嵌套(条件 1,2 & 3) 个人而言,遵循的一个总的规则是发现无效条件尽早返回。...使用函数默认参数和解构 猜你也许很熟悉以下的代码 JavaScript 我们经常需要检查 null / undefined 并赋予默认值: function test(fruit, quantity...如果我们不这么做的话,执行 test(undefined) ,你会得到一个错误 Cannot destructure property name of 'undefined' or 'null'....,因为 undefined 上并没有 name 属性。(译者注:这里不太准确,其实因为解构适用于对象(Object),而不是因为undefined 上并没有 name 属性(对象上也没有)。)...使用 Array.every Array.some 来处理全部/部分满足条件 最后一个小技巧更多地是关于使用新的(也不是很新了)JavaScript 数组函数来减少代码行数。

1.1K20

用简单的方法学习ECMAScript 6

letvar的工作方式很像,但是声明的变量是有块作用域的,在于当前的块作用域中有效。而var声明的变量是函数作用域内有效。...ES5之前,当我们想要遍历一个数组,会使用for,ES5一个forEach()方法帮助我们达成目的。现在的for-of更易用。...数组,字符串,Map对象,Set对象,DOM数据结构(正在使用的)都是可迭代的iterable对象。 因此,用简单的话来说,迭代器就是一种结构,每次调用它都会按序列返回一个结果。...每次都返回一个新的东西。 注意:迭代协议的一个关键特性就是的有序性:迭代器本身每次返回一个值,这意味着如果一个迭代的数据结构是非线性的(比如树),迭代器会对其进行线性化。...// 创建一个Map let map = new Map(); // 我们也可以初始化时就填充map其赋值: let map = new Map([ [ 1, 'one' ], [ 2, 'two

1.7K41

腾讯前端一面必会面试题合集

1)数组的解构 解构数组,以元素的位置匹配条件来提取想要数据的:const [a, b, c] = [1, 2, 3]最终,a、b、c分别被赋予了数组第0、1、2个索引位的值: 数组里的0、1...解构对象,是以属性的名称为匹配条件,来提取想要数据的。...因为 async 函数返回一个 Promise 对象,所以 await 可以用于等待一个 async 函数返回值——这也可以说是 await 等 async 函数,但要清楚,等的实际是一个返回值。...键的顺序Map 的 key 是有序的。因此,迭代的时候, Map 对象以插入的顺序返回键值。...如果函数返回一个对象,那么new 这个函数调用返回这个函数返回对象,否则返回 new 创建的新对象说一下类组件函数组件的区别?1.

40930

JavaScript ES6  让我们写得少,做得多

这是旧语法 ES6 之间的巨大差异。使用字符串,ES6 的文字字符串看起来比 ES5 更有条理,结构更好。 默认参数 您忘记编写参数,它不会返回未定义的错误,因为该参数已在默认值定义。...因此,您使用遗漏参数运行函数,它将采用默认参数的值,并且不会返回错误!...使用 ES6,我们只需将我们的值放在大括号以获取对象的任何属性。 注意:如果指定的变量与属性名称不同,则返回 undefined。...这是编写异步代码的方法。例如,当我们想要从 API 获取数据,可以使用它,或者当我们有一个需要时间执行的函数。Promise 使解决问题更容易,所以让我们创建我们的第一个 Promise!...Class 类是面向对象编程(OOP)的核心。它们使您的代码更安全封装。使用类可以为代码提供一个很好的结构并使其保持面向对象

79120

对于 JavaScript 循环之间的技术差异概述

可枚举的属性 可枚举对象一个定义特征是,通过赋值操作符向对象分配属性,我们将内部 enumerable 标志设置true,这是默认值。 当然,我们可以通过将其设置false来更改此行为。...ForEach map 方法 尽管可以使用forEachmap方法来实现相同的目标,但是它们的行为性能方面存在差异。 基础层面上,函数被调用时,它们都接收一个回调函数作为参数。...与forEach不同的是,我们并不总是需要执行一次更改来获得想要的结果,forEach,我们需要对newscore变量进行更改。每次运行时,提供相同的输入时,map函数将产生相同的结果。...同时,forEach对应项将从最后一次更改的前一个获取数据。 链式 map可以使用链式操作,因为map返回的结果是一个数组。因此,可以立即对结果调用任何其他数组方法。...对于forEach,这是不可能的,因为返回的值是undefined。 性能 map 方法的性能往往优于forEach方法。 检查用mapforEach实现的等效代码块的性能。

1.8K20

JavaScript的奇技淫巧

给方法传一个参数 如果你想调用一个方法,并不填其中的一个参数,JavaScript 就会报错。...并且当我们使用==作比较一些情况下由于类型转换或者说“把两个操作数一个转换成另一个,然后再比较”,会出现意想不到的结果。... JS ,如果你想要调用一个函数并指定的 this 可以使用 bind 方法。 Bind 语法 fun.bind(thisArg[, arg1[, arg2[, ...]]])...返回返回由指定的this值初始化参数改造的原函数拷贝 JS 的实例 const myCar = { brand: 'Ford', type: 'Sedan', color: 'Red' }...如果索引比文件名的长度大,结果""。 10.预防unapply攻击 重写内置对象的原型方法,外部代码可以通过重写代码达到暴漏修改已绑定参数的函数

51260

JavaScript 笔试题(二)

result : obj; } 上面代码我们该判断了 result 的类型,原生的 new 关键字上,如果你返回一个对象,则接收接收的会是这个对象,例如: function Per(name,...解析 array 的长度实际是 6,第一个、第三个、第五个元素都是值(empty)。map 函数遍历数组时会跳过运算值,但最终结果会保留,因此有值的元素进行了运算,值元素不变。 ?...如果一个元素 undefined 或 null,它会被转换为空字符串。toString 的返回结果与 join 函数没有参数返回结果一样。...其他的,如 filter 函数 some 函数也会跳过数组值,sort 函数排序时 undefined 会排在数组后面,值会排在 undefined 后面,无论做怎样的排序。...数组中有 0 null ,给数组排序,0 可能出现在 null 之前,也可能出现在 null 之后。 扩展运算符浅复制一个数组,值会被转成 undefined

51220

前端(三)-JavaScript

的每个元素都用指定的字符串连接起 来,然后返回连接后的字符串: 1.6 对象 JavaScript的对象是一种无序的集合数据类型,由若干键值对组成。...console.log(element + ', index = ' + index); }) 1.9.2 Map Map 的回调函数参数依次 value 、 key map 本身: var...) 有输入框(返回输入内容,直接取消返回null,没有输入但确认返回空字符串) prompt(str1,str2) 有输入框默认值 confirm(str) 是否选择框(返回值,true...//如果没有 return 语句,函数执行完毕后也会返回结果,只是结果 undefined 。...3.3两个重要点 3.3.1arguments 关键字 JavaScript还有一个免费赠送的关键字 arguments ,函数内部起作用,并且永远指向当前函数 的调用者传入的所有参数。

85820

JavaScript专题(二)数组去重,会就要会的理直气壮

JavaScript专题系列之数组去重 相信部分开发同学都会遇到这个问题,的答案有很多种,但是想要真的的回答好这个问题却比较难,我们今天来看看应该怎么回答这个问题。...2.1 indexOf简化一层循环判断 核心点: 如果需要返回原数组,则可以indexOf方法找到重复项(不等于首次出现的位置)利用splice移除 indexOf:返回在数组可以找到一个给定元素的第一个索引...,即本身数字1字符串‘1’是不同的,但保存到对象时会发生隐式类型转换,导致去重存在一定的隐患。...任何值(对象或者原始值) 都可以作为一个键或一个值。 Map.prototype.has(key):返回一个布尔值,表示Map实例是否包含键对应的值。...Map.prototype.set(key, value):设置Map对象中键的值。返回Map对象

35930

《JavaScript ES6 函数式编程入门经典》读书笔记

var closureFn = fn(5); closureFn();// 打印 "visible" 5 上述代码需要注意closureFn函数已经fn外部了,但是仍可以访问fn的变量outer...(在其他语言中可能是一个类),实现了map函数遍历每个对象值的时候生成一个新的对象。...下面一步一步实现一个普通的函子: // 首先定义一个容器 由于需要new一个对象 所以这里没使用箭头函数 // 函子跟提供map函数有关 跟类名是无关的 这里的Container也可以换成其他名称 const...MayBe函子一个map函数都会执行,但是如果某一个map返回的是,那么后面的map函数的参数函数就都不会执行了,单map函数仍然会执行。...(mul5).map(add100).value // 返回 125 oddOrEven(6).map(mul5).map(add100).value // 返回 6 Either函子实际应用时,如果值计算不再参与计算的时候就使用

2.3K21

送你43道JavaScript面试题

因此一个例子调用setTimeout函数,i已经被赋值3。...D: TypeError 答案: A JavaScript设置它们彼此相等,所有对象都通过引用进行交互。...虽然看起来像一个数字,但它并不是一个真正的数字:它有一堆额外的功能,是一个对象。 当我们使用==运算符检查它是否具有相同的值。 他们都有3的值,所以返回true。...使用new指的是我们创建的新对象。 但是,如果你不添加new指的是全局对象! 我们指定了this.firstName等于'Sarahthis.lastName等于Smith。...catch块之外,x仍然是undefined,而y是2。 当我们想在catch块之外的console.log(x)返回undefined,而y返回2。 ---- 39.

1.5K20
领券