有 3 种定义函数的方式
function 关键字后需要指定函数名
function sum(num1, num2) {
return num1 + num2;
} // 不加分号
console.log(sum(2, 3)); // 5
function 关键字后不用指定函数名;函数末尾需要添加一个分号,就像声明其他变量时一样
var sum = function (num1, num2) {
return num1 + num2;
}; // 加分号
console.log(sum(2, 3)); // 5
Function 构造函数可以接收任意数量的参数,但最后一个参数始终都被看成是函数体,而前面的参数则枚举出了新函数的参数。
var sum = new Function('num1', 'num2', 'return num1 + num2'); // 不推荐
console.log(sum(2, 3)); // 5
函数声明 与 函数表达式 是有区别的。执行代码时,解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
同时说明:函数声明会被提升;函数声明要早于变量声明被解析器读取;
// 函数声明提升
console.log(sum(2, 3)); // 5 (函数声明被提升到源代码树顶部)
function sum(sum1, sum2) {
return sum1 + sum2;
}
如果把上面的函数声明改为等价的函数表达式,执行将报错:
console.log(sum(2, 3)); // TypeError: sum is not a function
var sum = function (sum1, sum2) {
return sum1 + sum2;
}
function sum(num1, num2) {
return num1 + num2;
}
console.log(sum(2, 3)); // 5
var anotherSum = sum; // 使用 不带圆括号 的函数名是访问函数指针,而非调用函数
console.log(anotherSum(2, 3)); // 5
// 以下为关键代码
sum = null;
console.log(anotherSum(2, 3)); // 5
可以结合以下例子理解
var obj1 = new Object();
var obj2 = obj1;
obj1.name = 'Nicholas';
console.log(obj2.name); // Nicholas
obj1 = null;
console.log(obj2.name); // Nicholas
JavaScript 用“共享一切”的方法加载代码,这是该语言中最容易出错且最容易让人感到困惑的地方。其他语言使用诸如包这样的概念来定义代码作用域,但在 ECMAScript 6 以前,在应用程序的每一个 JavaScript 中定义的一切都共享一个全局作用域
回调地域 既一个异步请求需要另一个异步请求结果;由于 Javascript 是单线程的,所以这里执行顺序是 ajax1 -> ajax2 -> ajax3 -> ajax4;但是又由于这四个是异步操作
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言,一种可以在宿主环境中执行计算并能操作可计算对象的基于对象的程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript
ECMAScript 2020 是我们最喜欢的编程语言的第 11 版,其中包含一些新功能。有些是小特性,但有些将会有可能永远改变我们编写 JavaScript 的方式。
ECMAScript 2020 是 ECMAScript 语言规范的第11版。自1997年出版第一版以来,ECMAScript 已发展成为世界上使用最广泛的通用编程语言之一。
ECMAScript 语言规范每年都会进行一次更新,而备受期待的 ECMAScript 2024 将于 2024 年 6 月正式亮相。目前,ECMAScript 2024 的候选版本已经发布,为我们带来了一系列实用的新功能。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!