JavaScript 函数

发布于 2022-07-11  120 次阅读


pop 函数

.pop() 函数用来弹出一个数组末尾的值。 我们可以把这个弹出的值赋给一个变量存储起来。 换句话说就是 .pop() 函数移除数组末尾的元素并返回这个元素。

数组中任何类型的元素(数值,字符串,甚至是数组)都可以被弹出来 。

const threeArr = [1, 4, 6];
const oneDown = threeArr.pop();
console.log(oneDown);
console.log(threeArr);

第一个 console.log 将显示值 6,第二个将显示值 [1, 4]

push 函数

.push() 接受一个或多个参数(parameters),并把它压入到数组的末尾。

const arr1 = [1, 2, 3];
arr1.push(4);

const arr2 = ["Stimpson", "J", "cat"];
arr2.push(["happy", "joy"]);

arr1 现在值为 [1, 2, 3, 4]arr2 值为 ["Stimpson", "J", "cat", ["happy", "joy"]]

shift 函数

它的工作原理就像 .pop(),但它移除的是第一个元素,而不是最后一个。

const ourArray = ["Stimpson", "J", ["cat"]];
const removedFromOurArray = ourArray.shift();

使用 .shift() 函数从 myArray 中删除第一项,并将“移除的值”值分配给新变量 removedFromMyArray

unshift函数

unshift(移入)一个元素到数组的头部

.unshift() 函数用起来就像 .push() 函数一样,但不是在数组的末尾添加元素,unshift() 在数组的头部添加元素

const ourArray = ["Stimpson", "J", "cat"];
ourArray.shift();
ourArray.unshift("Happy");

shiftourArray 后值为 ["J", "cat"]。 在 unshiftourArray 后值为 ["Happy", "J", "cat"]

用函数编写可重用代码

在 JavaScript 中,我们可以把代码的重复部分抽取出来,放到一个函数 (functions)中。

function functionName() {
  console.log("Hello World");
}

可以通过函数名加上后面的小括号来调用(invoke)这个函数,就像这样: functionName(); 每次调用函数时,它都会在控制台上打印消息 Hello World。 每次调用函数时,大括号之间的所有代码都将被执行。

将值传递给带有参数的函数

函数的参数 (parameters)在函数调用中充当传入函数的输入占位符(也叫形参)。 函数调用时,参数可以为一个或多个。 调用函数时输入(或传递 "passed")的实际值被称为参数(arguments)。

这是带有两个参数的函数,param1param2

function testFun(param1, param2) {
  console.log(param1, param2);
}

然后我们可以调用 testFun,就像这样: testFun("Hello", "World");。 我们传入了两个字符串参数, HelloWorld。 在函数中,param1 等于字符串 Hello 以及 param2 等于字符串 World。 请注意,testFun 函数可以多次调用,每次调用时传递的参数会决定参数的实际值。

使用 return 给函数返回值

通过函数的参数(arguments)把值传入函数, 也可以使用 return 语句把数据从一个函数中传出来。

function plusThree(num) {
  return num + 3;
}

const answer = plusThree(5);

answer 的值为 8

plusThree 带有一个参数(argument)num,并返回(return)一个等于 num + 3 的值。

全局作用域和函数

在 JavaScript 中,作用域涉及到变量的作用范围。 在函数外定义的变量具有 全局 作用域。 这意味着,具有全局作用域的变量可以在代码的任何地方被调用。

未使用 letconst 关键字声明的变量会在 global 范围内自动创建。 当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时会产生意想不到的后果。 你应该总是用 letconst 声明你的变量。

局部作用域和函数

在一个函数内声明的变量,以及该函数的参数都具有局部(local)作用域。 这意味着它们只在该函数内可见。

这是在函数 myTest 内声明局部变量 loc 的例子:

function myTest() {
  const loc = "foo";
  console.log(loc);
}

myTest();
console.log(loc);

myTest() 函数调用将在控制台中显示字符串 fooconsole.log(loc) 行(在 myTest 函数之外)将抛出错误,因为 loc 未在函数之外定义。

函数中的全局作用域和局部作用域

一个程序中有可能具有相同名称的局部变量 和全局变量。 在这种情况下,局部变量将会优先于全局变量。

const someVar = "Hat";

function myFun() {
  const someVar = "Head";
  return someVar;
}

函数 myFun 将会返回字符串 Head,因为局部变量的优先级更高。

函数也可以返回 undefined

函数一般用 return 语句来返回值,但这不是必须的。 在函数没有 return 语句的情况下,当你调用它时,该函数会执行内部代码,返回的值是 undefined

let sum = 0;

function addSum(num) {
  sum = sum + num;
}

addSum(3);

addSum 是一个没有 return 语句的函数。 该函数将更改全局变量 sum,函数的返回值为 undefined

运算符

3 == '3' 返回 true ,因为 JavaScript 执行了从字符串到数字类型的转换。 3 === '3' 返回 false,因为类型不同且类型转换没有执行。

不相等运算符(!=)与相等运算符是相反的。 这意味着不相等并返回 false 的地方,用相等运算符会返回 true反之亦然。 与相等运算符类似,不相等运算符在比较的时候也会转换值的数据类型。

1 !=  2    // true
1 != "1"   // false
1 != '1'   // false
1 != true  // false
0 != false // false

严格不相等运算符(!==)与全等运算符是相反的。 这意味着严格不相等并返回 false 的地方,用严格相等运算符会返回 true反之亦然。 严格不相等运算符不会转换值的数据类型。

3 !==  3  // false
3 !== '3' // true
4 !==  3  // true

使用大于运算符(>)来比较两个数字。 如果大于运算符左边的数字大于右边的数字,将会返回 true。 否则,它返回 false

与相等运算符一样,大于运算符在比较的时候,会转换值的数据类型。

5   >  3  // true
7   > '3' // true
2   >  3  // false
'1' >  9  // false

愛衣ちゃん大勝利