由于篇幅过长,我将此系列分成上中下三篇,上、中篇: 看完这几道 JavaScript 面试题,让你与考官对答如流(中) 看完这几道 JavaScript 面试题,让你与考官对答如流(上) 51....以及如何检查值是否为 NaN? 57. 如何判断值是否为数组? 58. 如何在不使用%模运算符的情况下检查一个数字是否是偶数? 59. 如何检查对象中是否存在某个属性? 60. AJAX 是什么?...如何在JavaScript中创建对象? 62. Object.seal 和 Object.freeze 方法之间有什么区别? 63....在任何非async function的函数中使用await关键字都会抛出错误。await关键字在执行下一行代码之前等待右侧表达式(可能是一个Promise)返回。...如何在 JS 中创建对象?
JavaScript 是一种有趣的语言,我们都喜欢它,因为它的性质。浏览器是JavaScript的主要运行的地方,两者在我们的服务中协同工作。...function foo() { setTimeout(foo, 0); // 是否存在堆栈溢出错误? }; 答案:不会溢出 解析:JavaScript并发模型基于“事件循环”。...JS调用栈是后进先出(LIFO)的。引擎每次从堆栈中取出一个函数,然后从上到下依次运行代码。每当它遇到一些异步代码,如setTimeout,它就把它交给Web API(箭头1)。...错误 解析:展开语法 和 for-of 语句遍历iterable对象定义要遍历的数据。...因此,在foo.getx()的例子中,它指向foo对象,返回90的值。而在xGetter()的情况下,this指向 window对象, 返回 window 中的x的值,即10。
JavaScript 是一种有趣的语言,我们都喜欢它,因为它的性质。浏览器是JavaScript的主要运行的地方,两者在我们的服务中协同工作。...JS有一些概念,人们往往会对它掉以轻心,有时可能会忽略不计。原型、闭包和事件循环等概念仍然是大多数JS开发人员绕道而行的晦涩领域之一。正如我们所知,无知是一件危险的事情,它可能会导致错误。...// TDZ结束,'a'仅在此处初始化,值为20 let a = 20; } 下表概述了与JavaScript中使用的不同关键字声明的变量对应的提升行为和使用域: ?...JavaScript 环境的可视化形式如下所示: ? JS调用栈是后进先出(LIFO)的。引擎每次从堆栈中取出一个函数,然后从上到下依次运行代码。...因此,在 foo.getx()的例子中,它指向 foo对象,返回 90的值。而在 xGetter()的情况下, this指向 window对象, 返回 window 中的 x的值,即 10。
以及如何检查值是否为 NaN? 57. 如何判断值是否为数组? 58. 如何在不使用%模运算符的情况下检查一个数字是否是偶数? 59. 如何检查对象中是否存在某个属性? 60. AJAX 是什么?...如何在JavaScript中创建对象? 62. Object.seal 和 Object.freeze 方法之间有什么区别? 63....在任何非async function的函数中使用await关键字都会抛出错误。await关键字在执行下一行代码之前等待右侧表达式(可能是一个Promise)返回。...如何在 JS 中创建对象?...如何在 JS 中“深冻结”对象?
首页 专栏 javascript 文章详情 0 深入 JavaScript 中的默认参数! ?...在本文中,我们将学习一下形参和实参之间的区别,了解如何在函数中使用默认形参,了解支持默认形参的其他方法,并了解哪些类型的值和表达式可以用作默认形参。...通常,值也可以用变量,如: const number = 10 cube(number) // 1000 如果没有将参数传递该函数,函数将隐式地使用undefined作为默认值: cube() //...但是,如果默认参数是一个空对象,那么它只会给出undefined 的值,而不会抛出错误。...现在,我们可以使用默认参数来帮助保持函数的整洁和易于阅读。还可以预先将空对象和数组分配给参数,以便在处理从对象中检索值或遍历数组等情况时减少复杂性和代码行数。 我是小智 ,我们下期见!
如: a = 5; b = 6; c = a + b; 可以写成 a = 5; b = 6; c = a + b; JavaScript 代码块 JavaScript 可以分批地组合起来。...下表列出了 JavaScript 语句标识符 (关键字) : 语句 描述 break 用于跳出循环。 catch 语句块,在 try 语句块执行出错时执行 catch 语句块。...for … in 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。 function 定义一个函数 if … else 用于基于不同的条件来执行不同的动作。...JavaScript 会忽略多余的空格,如 alert (10); 等效于 alert(10); 可以在文本字符串中使用反斜杠对代码行进行换行,如 document.write("你好 \...如果变量未赋值,那么它的值实际上是undefined 重新声明 JavaScript 变量 如果重新声明 JavaScript 变量,该变量赋值,则为新值(拥有动态类型);如不赋值,则为旧值,不是undefined
如GitHub统计所示,JavaScript在GitHub中的活跃库数量和总推送数量位居前列。 在其他类别中也不会落后于很多。 (查看最新的GitHub语言统计信息)。...这可能会很容易发生,特别是如果您在不经常地对代码进行测试的情况下使用递归。...然而,这个函数是递归的,并且开始调用自身而没有任何终止条件。 所以在执行的每个步骤中,相同的功能被一次又一次地添加到调用堆栈中。 看起来像这样: ?...大多数浏览器通过提出错误来采取行动,询问您是否要终止网页。 ? 现在,这不是最好的用户体验,是吗? 那么,如何在不阻塞UI并使浏览器无响应的情况下执行繁重的代码呢? 那么解决方案是异步回调。...这将在“JavaScript如何实际工作”教程的第2部分中更详细地解释:“V8引擎内有关如何编写优化代码的5个提示”。
如: a = 5; b = 6; c = a + b; 可以写成 a = 5; b = 6; c = a + b; JavaScript 代码块 JavaScript 可以分批地组合起来。...下表列出了 JavaScript 语句标识符 (关键字) : 语句 描述 break 用于跳出循环。 catch 语句块,在 try 语句块执行出错时执行 catch 语句块。...for … in 用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。 function 定义一个函数 if … else 用于基于不同的条件来执行不同的动作。...JavaScript 会忽略多余的空格,如 alert (10); 等效于 alert(10); 可以在文本字符串中使用反斜杠对代码行进行换行,如 document.write("你好 \...重新声明 JavaScript 变量 如果重新声明 JavaScript 变量,该变量赋值,则为新值(拥有动态类型);如不赋值,则为旧值,不是undefined ? ?
JavaScript 中的数据类型包括字符串、数字、布尔值、对象、未定义和空值。 3、null和undefined有什么区别?...null 表示有意不存在任何对象值,而 undefined 表示不存在值或未初始化的变量。 4. 如何在 JavaScript 中声明变量?...bind() 方法创建一个新函数,在调用时具有指定的 this 值和传递给它的参数。 12. 在 JavaScript 中循环遍历数组有哪些不同的方法?...reduce() 方法对累加器和数组中的每个元素应用一个函数,产生单个值。 36. 如何在 JavaScript 中深度复制一个对象?...你如何处理 JavaScript 中的异步编程? JavaScript 中的异步编程可以使用回调、承诺或异步/等待语法来处理,允许非阻塞地执行代码和处理异步任务。 44.
在现代前端开发中,JavaScript是不可或缺的一部分。然而,尽管我们日常使用它来构建强大的Web应用程序,但JavaScript仍然有许多强大的功能和技巧,可能仍然未被广泛利用。...我建议你使用flatMap()而不是filter()和map()的组合。 FlatMap采用单次遍历,不生成中间数组,而filter()和map()的组合则会生成中间数组。...4、使用生成器(Generators) 生成器和迭代器可能是那些 JavaScript 开发者很少使用的代码片段,只有在编码面试中才会涉及到。...面试题:你如何在Node.js服务器或纯JavaScript中实现类似无限加载的功能? 这就是迭代器真正有用的地方。不必将请求中的大量数据流式存储在本地存储或其他地方以供以后使用。...Number(userId):""}`; } 上面的代码很混乱,很可能会出错,并且每次添加其他参数时都需要在最后添加一些规则。通过使用像URL这样的本地类,我们可以改进我们的代码。
-- /XXX模块 --> 2.2.4标签与属性 1、由于html标签和属性不区别大小写,所有建议都采用小写,尤其是自定义标签和属性名,否定js中取不到,如: <div data-bgColor="red...<em>如</em>:FONT-SIZE:12PX必须改为font-size:12px; 4、关于css背景图片(关键字:合并,缩写,去引号), 引号不是必须<em>的</em>,而且在某些浏览器上加引号反而<em>出错</em>: // <em>不</em>推荐 .canbox...非严格模式下,函数<em>中</em>未被定义或为<em>空</em>( null or undefined)<em>的</em>this会默认指向全局环境(global)。...否则变量就会暴露在全局上下文中, 这样很<em>可能</em>会和现有变量冲突(es6<em>中</em>let修复了这个问题)。...jQuery<em>中</em>class选择器是最慢<em>的</em>,因为在IE浏览器下它会<em>遍历</em>所有的DOM节点。
JavaScript 前言 只有深入学精一门语言,学其他语言才能更好地举一反三,触类旁听。...null 表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入 null,表示该参数为空。...比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入 null ,表示未发生错误。 undefined 表示“未定义”,下面是返回 undefined 的典型场景。...function f() {} f() // undefined 注意,布尔值转换的时候,空数组([])和空对象({})对应的布尔值,都是true。...Object 属性的遍历 for…in 循环用来遍历一个对象的全部属性(包括可遍历的继承的属性)。
F.for-in循环 1.总是在for-in循环中使用hasOwnProperty(),除非你想查找原型链,这时应当补充注释 2.for-in循环是用来对实例对象和原型链中的键(key)做遍历的,而不是用来遍历包含数字索引的数组的...不推荐将严格模式运用到全局作用域中 2.尽可能的在函数内部使用严格模式 F.相等 1.数字和字符串比较字符串会转为数字,布尔值和字符串比较布尔值会转为数字,对象和类型比较会调用valueOf(),如果没有...in运算符,仅会简单地判断属性是否存在,而不会去读属性的值。...、重复的值、设置(比如每页的配置项)、任何可能发生变更的值 B.抽离配置数据 1.将配置数据拿到外部,使用一个对象(如var config={})来保存所有配置信息 C.保存配置数据 1.将config...在代码的某个特殊之处计划一个失败总比要在所有的地方都预期失败简单的多 B.在JavaScript中抛出错误 throw new Error(“Something bad happened.”)
简介 JavaScript是一种运行在浏览器中的解释型的编程语言。...null表示一个“空”的值,它和0以及空字符串’’不同,0是一个数值,’’表示长度为0的字符串,而null表示“空”。...变量名也不能是JavaScript的关键字,如if、while等。...注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。 上述对象申明了一个name属性,值是’小明’,birth属性,值是1990,以及其他一些属性。...相反地,有{}的语句就不会出错: var age = 20; if (age >= 18) { alert('adult'); } else { console.log('age <
TypeScript Typed JavaScript at Any Scale. 添加了类型系统的 JavaScript,适用于任何规模的项目。...let age: number = 18 let sentence: string = `I from China Beijing, my name is ${name}, age ${age}` 空值...Js中没有Void的概念,Ts中可以用void表示没有任何返回值的函数: function alertHello(): void { alert('hello') } null & undefiled...= { name: 'Alice', age: 18 } 上面的栗子,变量alice的结构必须与接口Person相一致,如果我们不写age,那么就会抛出错误类型 "{ name: string...: number; } let alice: Person = { name: 'Alice' } 完全Ok 任意属性 如果我们需要在变量中定义一些我们将来可能会添加的属性,有极大的不确定性的话
-- /XXX模块 --> 2.2.4标签与属性 1、由于html标签和属性不区别大小写,所有建议都采用小写,尤其是自定义标签和属性名,否定js中取不到,如: <div data-bgColor="red...<em>如</em>:FONT-SIZE:12PX必须改为font-size:12px; 3、关于css背景图片(关键字:合并,缩写,去引号), 引号不是必须<em>的</em>,而且在某些浏览器上加引号反而<em>出错</em>: // <em>不</em>推荐 .canbox...非严格模式下,函数<em>中</em>未被定义或为<em>空</em>( null or undefined)<em>的</em>this会默认指向全局环境(global)。...否则变量就会暴露在全局上下文中, 这样很<em>可能</em>会和现有变量冲突(es6<em>中</em>let修复了这个问题)。...jQuery<em>中</em>class选择器是最慢<em>的</em>,因为在IE浏览器下它会<em>遍历</em>所有的DOM节点。
var foo = 'foo' foo = 123 console.log(foo) // 123 2.正确优雅地判断字符串是否为空 弱类型给编程带了方便,但有这种灵活的成本并不廉价,因为一不小心就会出错...但是因为 JS 是弱类型语言,只有执行表达式时才能确定 s 的类型,所以 s 可能并不是字符串类型,如果 s 是 undefined 或者 null,也认为是空的话,那么s == ''并不成立,得出错误的判断...JS 中 == 只判断值,=== 运算符需要在类型和值两方面同时相等才判为 true。...实际上 null 与 undefined 虽然不是东东,但是 JS 中规定,二者的值是相等的,只是类型不同。...判断字符串是否为空可能会有人从相反的角度出发,即判断字符串不为空。
操作符是用于Typescript的, 只有在typescript环境中可以使用 接下来,我们将逐一介绍它们的用法和意义。 1. ??(空值合并运算符) 空值合并运算符 (??)...允许我们读取位于连接对象链深处的属性的值,而不必显式地验证链中的每个引用是否有效。如果链中的某个引用是 null 或 undefined,表达式会短路并返回 undefined。...使用非空断言时,开发者实际上是在告诉编译器:“我知道这个值不可能是 null 或 undefined,所以请相信我,不要在这里报错。”...然而,这种代码的使用通常要谨慎,因为它依赖于开发者的判断来确保属性不是 null 或 undefined。如果可能的话,更好的做法是使用可选链 (?.) 或进行显式的空值检查来避免潜在的运行时错误。...这三个符号为 JavaScript 和 TypeScript 开发者提供了处理空值、链式访问和类型断言的强大工具。它们有助于编写更加简洁、安全且易于理解的代码。
-- /XXX模块 -->复制2.2.4标签与属性1、由于html标签和属性不区别大小写,所有建议都采用小写,尤其是自定义标签和属性名,否定js中取不到,如:<div data-bgColor="red...<em>如</em>:FONT-SIZE:12PX必须改为font-size:12px;3、关于css背景图片(关键字:合并,缩写,去引号), 引号不是必须<em>的</em>,而且在某些浏览器上加引号反而<em>出错</em>:// <em>不</em>推荐.canbox...非严格模式下,函数<em>中</em>未被定义或为<em>空</em>( null or undefined)<em>的</em>this会默认指向全局环境(global)。...否则变量就会暴露在全局上下文中, 这样很<em>可能</em>会和现有变量冲突(es6<em>中</em>let修复了这个问题)。...jQuery<em>中</em>class选择器是最慢<em>的</em>,因为在IE浏览器下它会<em>遍历</em>所有的DOM节点。
==""){ //给出错误提示信息 alert("用户名不能为空!")...(获取span给出提示信息) 第三步:离焦事件绑定的函数中(获取用户输入的内容进行判断) 第四步:如果失败,在span位置给出错误提示信息,如果成功,让span内容为空。...Tbody里面的行数(rows.length) JS的遍历(for循环) 获取奇数行和偶数行(对遍历中角标对2取余) 设置背景颜色(.style.backgroundColor) js代码 <script...第四步:遍历二维数组中的省份 第五步:将遍历的省份与用户选择的省份比较 第六步:如果相同,遍历该省份下所有的城市 第七步:创建城市文本节点 第八步:创建option元素节点 第九步:将城市文本节点添加到...内容 cityEle.options.length=0; //2.遍历二维数组中的省份 for(var i=0;i<cities.length;i++){ //注意,比较的是角标
领取专属 10元无门槛券
手把手带您无忧上云