JavaScript学习笔记--函数
-
function指出这是一个函数定义; -
abs是函数的名称; -
(x)括号内列出函数的参数,多个参数以,分隔; -
{ ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。 - JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数,传入的参数比定义的少也没有问题。
-
this关键字:在一个方法内部,this是一个特殊变量,它始终指向当前对象。所以,this.xxx可以拿到当前对象的xxx属性.
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
------------ 下面的函数区别在于最后加了分号,表示赋值语句结束。----------
var abs = function (x) {
if (x >= 0) {
return x;
} else {
return -x;
}
};
关键字arguments:只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array。
函数的个数是.length 判断的
function foo(x) {
console.log('x = ' + x); // 10
for (var i=0; i<arguments.length; i++) {
console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
}
}
foo(10, 20, 30);
rest参数:rest参数只能写在最后,前面用...标识。
function sum(...rest) {
var s = 0
rest.forEach(function(element){
s += element
})
return s
}
JavaScript的函数在查找变量时从自身函数定义开始,从“内”向“外”查找。如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。
JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部。
严格遵守“在函数内部首先申明所有变量”这一规则
JavaScript实际上只有一个全局作用域。任何变量(函数也视为变量),如果没有在当前函数作用域中找到,就会继续往上查找,最后如果在全局作用域中也没有找到,则报ReferenceError错误。
JavaScript 变量的生命期从它们被声明的时间开始。
局部 JavaScript 变量
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
全局 JavaScript 变量
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
JavaScript 变量的生存期
JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
向未声明的 JavaScript 变量来分配值
如果您把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。

浙公网安备 33010602011771号