共享传递:该求值策略被用于Python、Java、Ruby、JS等多种语言中。该策略中,基本类型按值传递,对象类型按共享传递的(call by sharing,也叫按对象传递、按对象共享传递)。共享传递和引用传递的区别在于:在共享传递中对函数形参的赋值,不会影响实参的值。如下面例子中,不可以通过修改形参o的值,来修改obj的值。
var obj = {x : 1};
function foo(o) {
o = 100;
}
foo(obj);
console.log(obj.x); // 仍然是1, obj并未被修改为100.
复制代码
"按值传递、按引用传递" 区别
按值传递(call by value) 是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。按值传递由于每次都需要克隆副本,对一些复杂类型,性能较低。
按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值假如被修改,实参也会被修改。同时两者指向相同的值。按引用传递会使函数调用的追踪更加困难,偶然也会引起一些微妙的BUG。
2、this 关键字
this 关键字对象详解:http://blog.csdn.net/chenchunlin526/article/details/78889301
this 是面向对象语言中的一个紧张概念,在 C++、JAVA,C#等大型语言中,this 指向运行时的当前对象。但是在 JavaScript中,由于 JavaScript 的动态性(表明执行,固然也有简朴的预编译过程),this 的指向在运行时才确定。也就是 JavaScript 中 this 会随着执行情况的改变而改变。这个特性带来了编程上的自由和机动,联合 apply、call、bind 方法,可以使 JS 变得异常强大。
this 的值通常是由所在函数的执行情况决定,也就是说要看函数是怎样被调用的。同一个函数每一次调用,this 都大概指向不同的对象;
顶层await 是ES2022中引入的语言,从14.8版开始在Node中可用。
当试图在一个async函数之外使用await时,就会发生这种情况。
Uncaught SyntaxError: await is only valid in async functions, async generators and modules
例如,在代码的顶层:
const ms = await Promise.resolve('Hello, World!');