2

ES6版本引入了哪些特性?

let 和 const 关键字。
箭头函数。
多行字符串。
解构赋值。
增强的对象文字。
Promises

var、const 和 let 的主要区别是什么?

* 用 let 和 const 声明的变量是块范围的;用 var 声明的变量是全局范围的或函数范围的。
* var 变量可以在其范围内更新和重新声明;让变量可以更新但不能重新声明;const 变量既不能更新也不能重新声明。
* var 可以提升到其作用域的顶部。其中 var 变量初始化为未定义,let 和 const 变量未初始化(临时死区,TDZ)。
* 虽然可以在不初始化的情况下声明 var 和 let,但必须在声明期间初始化 const。

什么是promise和async-await?

Promises 是一种在 JavaScript 中启用异步编程的方法。一般来说,Promise 意味着程序调用函数时期它返回调用程序可以在进一步计算中使用的结果。

Async-await 也有助于异步编程。它是 promise 的语法糖。Async-await 语法简单,很容易在单个函数中维护大量异步调用。此外, async-wait 可以防止回调地狱。

什么是闭包?

在 JavaScript 函数中定义的函数称为闭包。它可以访问 3 种类型的范围(内部、外部和全局),在外部函数的情况下,除了访问变量之外,它还可以查看参数。

JavaScript如何保持并发?

* 事件循环。 
* 微和宏队列。
* 回调。
* 线程池和集群(多线程)。

什么是回调,并提供一个简单的例子

回调函数是作为参数传递给另一个函数并在某些操作完成后执行的函数。

function modifyArray(arr, callback) {
  // do something to arr here
  arr.push(100);
  // then execute the callback function that was passed
  callback();
}

var arr = [1, 2, 3, 4, 5];

modifyArray(arr, function() {
  console.log("array has been modified", arr);
});

声明一个函数有几种方式,有什么不同

函数声明由 function 关键字组成,后跟一个强制性的函数名称,一对括号中的参数列表。

可以在对象字面量和 ES2015 类的方法声明中使用速记方法定义。

使用包含参数列表的一对括号定义箭头函数。后面是一个粗箭头 => 和一对分隔正文语句的花括号。

在函数表达式中,您将函数分配给变量。

可以使用 Function 构造函数动态创建函数,但存在安全和性能问题,不建议使用。

什么是匿名函数?

它是一个没有名字的函数,它们是在运行时使用函数运算符动态声明的,因为它提供了比声明符更大的灵活性

var display=function(){  
 alert("Anonymous Function is declared");  
}  
display();

如何从特定索引返回字符?

charAt() 方法可用于找出任何特定索引处的字符值,考虑到“n”是字符串的长度,索引可以从 0 开始,到“n-1”结束。然而,索引的值不能为负数,不能等于或大于字符串的长度。

var str="LambdaTest";    
document.writeln(str.charAt(4));

什么是原型属性?

原型属性通常用于实现继承。每个函数都有一个,默认值为空。方法和属性被添加到原型中以使其可用于实例。

//计算矩形周长
function Rectangle(x, y) {
this.x = x;
this.y = y;
}
Rectangle.prototype.perimeter = function() {
return 2 * (this.x + this.y);
}
var rectangle = new Rectangle(4, 3);
console.log(rectangle.perimeter()); // outputs '14'

异步编程及其重要性

JS 引擎在事件循环中运行。当遇到阻塞操作时,会触发请求并且代码会不断运行。一旦响应准备好,就会触发中断。执行事件处理程序,而控制流继续。因此,通过异步编程,单个线程可以同时处理多个操作。

客户端 JavaScript 与服务器端有何不同

客户端 JavaScript 通常由基本语言以及与在浏览器中运行的脚本相关的某些预定义对象组成。由 HTML 直接嵌入,在运行时由浏览器执行。

服务器端 JS 几乎类似于客户端。但是,它是在服务器中执行的,并且只有在代码编译完成后才能部署。

墨城
1.7k 声望2.1k 粉丝