Sym - 一个用 Java 实现的现代化社区平台 • 源码 • 注册

Pipe - 小而美的开源博客平台 • 体验 • 皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载 
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

0 篇文章

什么是闭包?请给出一个有用的示例

2019-02-10 回答闭包是一个定义在其他函数内部的函数,他由函数及创建该函数的词法环境组合而成,这个环境包含了这个闭包创建时所能访问的所有局部变量。闭包可以访问三种作用域中的变量:自身函数内声明的变量父函数作用域中的变量全局中声明的变量在 JavaScript 中所有函数都是闭包的,因为他们都可以访问外部作用域,但是大部分函数都没有充分利用闭包的优势:状态持久化。因此闭包有时也被称为一个有状态的函数

什么是大 O 符号?

2019-02-09 回答大 O 符号在计算机科学中用来描述算法的时间复杂度。执行速度快且复杂性低的算法视为优秀的算法。算法的运行次数并不是每次都相同,大部分取决于所提供的数据。在某些情况下,他们执行的很快,但某些情况下,他们却执行的很慢(哪怕他们的数据是一样多)。以下示例中,我们假设基准时间为:1element=1msO(1)arr[arr.length-1]//1000elements=1ms 时间复

`var`、`let`、`const` 和没有关键字的声明有什么区别?

2019-02-08 回答无关键字在变量赋值之前如果没有关键字的话,则会把变量分配给全局变量或覆盖已经声明的变量。在非严格模式下,如果变量还没有被声明的话,他将会把变量做为全局对象(浏览器中的 window)的一个属性。在严格模式下,他将抛出异常以防止创建不需要的全局变量。varvar 是 ES2015 以前声明变量的默认语句。他在函数作用域内创建的变量可以在该作用域中被重新赋值和重新声明。但是,由于缺少块作

什么是 JavaScript 数据类型?

2019-02-07 回答最新的 ECMAScript 标准定义了 7 种数据类型,其中含有 Boolean、Null、Undefined、Number、String 和 Symbol6 种原始类型和 Object 非原始类型。加分回答 Array、Date 和 function 都是 object 类型。Symbol 是 ES6 中新引入的原始数据类型,Symbol() 可创建独一无二的值。函数在 JavaScript 中具有可调用能力的对象

typeof

2019-02-06 提问以下代码的执行结果是什么?typeoftypeof0 回答执行结果为 stringtypeof0 返回字符串 number,因此 typeof'number' 的结果为 string。加分回答 typeof 可能的返回值类型结果 undefinedundefinednullobjectbooleanbooleannumbernumberstringstringSymbol()symbol 函数 fu

JavaScript 中的短路计算是什么?

2019-02-05 回答由于逻辑表达式的运算顺序是从左到右,并且他可以提前结束。使用这一规则便可进行短路计算。true||false 以上使用逻辑或的示例中,由于表达式的计算结果为 true,JavaScript 并不会计算执行第二个操作 false。这就是短路计算。这也适用于逻辑与 false&&true 在逻辑运算过程中如果有一个表达式执行抛出异常,程序也不会受到影响,如:true||nonexistent

在 JavaScript 中同步和异步代码有什么区别?

2019-02-04 回答同步意味着每一个操作必须等待前一个操作完成后才能执行。异步意味着操作不需要等待其他操作完成后才开始执行。在 JavaScript 中,由于单线程的特性导致所有代码都是同步的。但是,有些异步操作(例如:XMLHttpRequest 或 setTimeout)并不是由主线程进行处理的,他们由本机代码(浏览器 API)所控制,并不属于程序的一部分。但程序中被执行的回调部分依旧是同步的。加分回

JavaScript 是否需要分号?

2019-02-03 回答有时候是不需要的,有时候是需要的。这主要取决于 JavaScript 的自动插入分号的机制,解释器会在大多数语句后自动添加分号。也就是说在大多数情况下,我们是不需要分号的。但是,在某些情况下我们是需要分号的。通常块元素开头是不需要分号的,但是下面代码片断就需要分号:以 [开头的行 constpreviousLine=3;[1,2,previousLine].map(n=>n*2) 以(

ASI (automatic semicolon insertion) - 自动插入分号

2019-02-02 题目执行以下函数将输入什么?functiongreet(){return{message:"hello"}} 回答执行 greet() 将输出 undefined。因为 JavaScript 的 ASI(automaticsemicoloninsertion),即自动插入分号会使编译器在语法分析时在 return 关键字后放一个分号,所以在不产生错误的情况下,他将输出 undefined。加分回答在

原始值和引用值的比较

2019-02-01 题目以下代码将输入什么?consta=[1,2,3]constb=[1,2,3]constc="1,2,3"console.log(a==c)console.log(a==b) 回答第一个 console.log 输出为 true,因为 JavaScript 编译器在两个等号时会执行类型转换,a 将进行 a.toString() 转换为"1,2,3",所以 a 和 c 相等。第二个 console.log 输

原型继承和经典继承有什么区别?

2019-01-31 回答在原型继承中,对象实例直接从其他对象继承。通常使用工厂模式或 Object.create() 来创建对象实例。在经典继承中,对象实例从类中继承他们的属性和函数。通常使用构造函数和 new 关键字来创建对象实例。加分回答代码中原型链过长时,应将其分解,以避免出现性能问题。原生原型不应该被扩展,除非为了与新的 JavaScript 特性兼容。在 ES6 中引入的 class 关键字只是语法糖,他仍然

什么是 Promises?

2019-01-30 回答 Promise 对象在异步操作后可对其完成或失败进行回调,并展示其结果值。以下代码片断是一个 Promise 的示例:100ms 后使用标准输出流打印出'result' 字符串。此外请注意 catch,他可以用于错误处理。Promise 是链式的。newPromise((resolve,reject)=>{setTimeout(()=>{resolve("result")},100)}).

JavaScript 通过值还是引用传递?

2019-01-29 回答 JavaScript 是通过值进行传递的。然而对于对象而言,值是对象的引用。加分回答在值传递中,传递给函数的参数是函数被调用时所传实参的拷贝。在传值调用中实际参数被求值,其值被绑定到函数中对应的变量上(通常是把值复制到新内存区域)。在引用传递中,传递给函数的是他的实际参数的隐式引用而不是实参的拷贝。通常函数能够修改这些参数(比如赋值),而且改变对于调用者是可见的。返回总目录每天

列举几种创建对象的方法,并说明每种方法的使用场景

2019-01-28 回答对象字面量通常用于存储一次性数据。constperson={name:"John",age:50,birthday(){this.age++}}person.birthday()console.log(person.age)//51 构造函数通常用于为一个对象创建多个实例的场景,每个实例都不会受到该对象的其他实例的影响,他们有自己独立的数据。new 关键字必须位于构造函数之前,否

参数和 arguments 有什么区别

2019-01-27 回答参数是函数定义时的变量名,而 arguments 的值是函数调用时赋予的。functionmyFunction(parameter1,parameter2){console.log(arguments[0])//"argument1"}myFunction("argument1","argument2") 加分回答 arguments 是一个类似数组的对象,他包含了函数调用时参数的有关

`null` 和 `undefined` 有什么区别?

2019-01-26 回答在 JavaScript 中有两个值表示无——undefined 和 null。他们之间根本的区别在于 null 是显式的,而 undefined 是隐式的。当一个属性不存在或一个变量没有被赋值时,他们的值为 undefined。把 null 赋给一个变量时,就显式的表明这个变量 “无值”。实际上,当明确知道没有对象或不应该有值时就使用 null,否则就使用 undefined。加分回答 typeof 结果

解释 MIME type 及其作用

2019-01-25 回答 MIME 是多用途 Internet 邮件扩展(Multi-purposeInternetMailExtensions)的首字母缩写。他使用标准化的方式来表示网络之间传输的文档类型及格式。完整格式可查看 MediaTypes。加分回答 MIMEtype 由两部分组成:斜杠(/)分隔的类型和子类型,中间无空格。例如:MicrosoftWord 文件的 MIMEtype 是 application/

使用星号替换字符串且显示后四位

2019-01-24 题目 /** 请按要求实现 `mask` 函数:以下代码执行时,需返回正确结果且运行过程中无异常 */mask('123456789')//*****6789mask('123456789abcd')//*********abcd 回答有很多种方法可以解决这个问题,以下只是其中之一。通过给 slice() 传入 - 4 作为参数,我们可获取字符串的后 4 位。然后再使用 String.prototype.p

词法作用域和动态作用域的区别?

2019-01-23 回答词法作用域指的是使用函数位置来确定变量值。于此相对的是动态作用域,他使用函数调用的位置来确定变量值。加分回答词法作用语也被成为静态作用域。在闭包中,JavaScript 依旧遵循词法作用域。大多数语言都使用词法范围,因为这样的源代码更加容易理解。JavaScript 实际上没有动态作用域,但 this 机制却和动态作用域类似:关注点都在于函数是如何被调用的。下列代码中,使用词法作用域

什么是内联条件表达式?

2019-01-22 回答你可以使用 if 语句或三元表达式来根据条件获取对应的结果。除了这些方法之外,你还可以在 JSX 中嵌入任意表达式,如:花括号中使用逻辑运算符 && 或三元表达式。(<div><h1>Hello!{isLoggedIn?'Vanessa':'User'}</h1>{unreadMessages.length>0&&<h2>Youhave{unreadMessages.length}unr