From 563ca0a35e98678e2b7d5f154f31f496851e8d60 Mon Sep 17 00:00:00 2001 From: t7yang Date: Mon, 10 Jan 2022 08:38:07 +0800 Subject: remove code tag inside pre tag for zh-CN --- .../web/javascript/guide/functions/index.html | 28 +++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'files/zh-cn/web/javascript/guide/functions') diff --git a/files/zh-cn/web/javascript/guide/functions/index.html b/files/zh-cn/web/javascript/guide/functions/index.html index f80d65ce3b..73a1efbdc4 100644 --- a/files/zh-cn/web/javascript/guide/functions/index.html +++ b/files/zh-cn/web/javascript/guide/functions/index.html @@ -85,7 +85,7 @@ console.log(factorial(3));

下面的代码:

-
function map(f, a) {
+
function map(f, a) {
   let result = []; // 创建一个数组
   let i; // 声明一个值,用来循环
   for (i = 0; i != a.length; i++)
@@ -97,7 +97,7 @@ const f = function(x) {
 }
 let numbers = [0,1, 2, 5,10];
 let cube = map(f,numbers);
-console.log(cube);
+console.log(cube);

返回 [0, 1, 8, 125, 1000]。

@@ -136,11 +136,11 @@ function square(n) { return n*n }

提示:注意只有使用如上的语法形式(即 function funcName(){})才可以。而下面的代码是无效的。就是说,函数提升仅适用于函数声明,而不适用于函数表达式。

-
console.log(square); // square is hoisted with an initial value undefined.
+
console.log(square); // square is hoisted with an initial value undefined.
 console.log(square(5)); // Uncaught TypeError: square is not a function
 const square = function (n) {
   return n * n;
-}
+}

函数的参数并不局限于字符串或数字。你也可以将整个对象传递给函数。函数 show_props(其定义参见 用对象编程)就是一个将对象作为参数的例子。

@@ -468,7 +468,7 @@ getCode(); // Returns the secret code

例如,设想有一个用来连接字符串的函数。唯一事先确定的参数是在连接后的字符串中用来分隔各个连接部分的字符(译注:比如例子里的分号“;”)。该函数定义如下:

-
function myConcat(separator) {
+
function myConcat(separator) {
    var result = ''; // 把值初始化成一个字符串,这样就可以用来保存字符串了!!
    var i;
    // iterate through arguments
@@ -476,7 +476,7 @@ getCode();    // Returns the secret code
       result += arguments[i] + separator;
    }
    return result;
-}
+}

你可以给这个函数传递任意数量的参数,它会将各个参数连接成一个字符串“列表”:

@@ -544,7 +544,7 @@ console.log(arr); // [2, 4, 6]

在一些函数模式中,更简洁的函数很受欢迎。对比一下:

-
var a = [
+
var a = [
   "Hydrogen",
   "Helium",
   "Lithium",
@@ -557,13 +557,13 @@ console.log(a2); // logs [ 8, 6, 7, 9 ]
 
 var a3 = a.map( s => s.length );
 
-console.log(a3); // logs [ 8, 6, 7, 9 ]
+console.log(a3); // logs [ 8, 6, 7, 9 ]

this 的词法

在箭头函数出现之前,每一个新函数都重新定义了自己的 this 值(在构造函数中是一个新的对象;在严格模式下是未定义的;在作为“对象方法”调用的函数中指向这个对象;等等)。以面向对象的编程风格,这样着实有点恼人。

-
function Person() {
+
function Person() {
   // 构造函数Person()将`this`定义为自身
   this.age = 0;
 
@@ -575,11 +575,11 @@ console.log(a3); // logs [ 8, 6, 7, 9 ]
}, 1000); } -var p = new Person();
+var p = new Person();

在ECMAScript 3/5里,通过把this的值赋值给一个变量可以修复这个问题。

-
function Person() {
+
function Person() {
   var self = this; // 有的人习惯用`that`而不是`self`,
                    // 无论你选择哪一种方式,请保持前后代码的一致性
   self.age = 0;
@@ -588,13 +588,13 @@ var p = new Person();
// 以下语句可以实现预期的功能 self.age++; }, 1000); -}
+}

另外,创建一个约束函数可以使得 this值被正确传递给 growUp() 函数。

箭头函数捕捉闭包上下文的this值,所以下面的代码工作正常。

-
function Person(){
+
function Person(){
   this.age = 0;
 
   setInterval(() => {
@@ -602,7 +602,7 @@ var p = new Person();
}, 1000); } -var p = new Person();
+var p = new Person();

预定义函数

-- cgit v1.2.3-54-g00ecf