函数参数
JavaScript 函数对参数的值(arguments)没有进行任何的检查。
怎么理解呢?就是说你放什么类型的参数,都可以, 不需要像Java那样, 需要对类型进行声明。
函数显式参数与隐式参数(arguments)
在先前的教程中,我们已经学习了函数的显式参数:
functionName(parameter1, parameter2, parameter3) {
// 代码放这里
}
函数显式参数在函数定义时列出。
函数隐式参数(arguments)是函数调用时传递给函数真正的值。
例如:
function sum(){
return arguments[0]+arguments[1];
}
sum(1, 2);//3
以上 sum 函数就是使用 arguments 获取隐式参数, 进行操作。
参数规则
JavaScript 函数定义时参数没有指定数据类型。
JavaScript 函数对隐藏参数(arguments)没有进行检测。
JavaScript 函数对隐藏参数(arguments)的个数没有进行检测。
多个参数
函数定义后,可以根据需要多次调用.
JavaScript函数不检查收到的参数数量。
function sayHello(name, age) {
document.write( name + " 年龄是:" + age + " 岁");
}
sayHello("John")
//输出: John 年龄是:undefined 岁
提示: 如果使用缺少参数(少于声明数)调用函数,则将缺少的值为undefined,这表示未为变量赋值。
JavaScript 局部作用域
变量在函数内声明,变量为局部作用域。
局部变量:只能在函数内部访问。
// 此处不能调用 carName 变量
function myFunction() {
var carName = "大众";
// 函数内可调用 carName 变量
}
因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。
局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。
局部变量的优先级高于同名的全局变量。
// 声明 全局carName
var carName = '奔驰';
function myFunction() {
var carName = "大众";
document.write(carName); // carName 值为 大众
}
JavaScript 全局变量
变量在函数外定义,即为全局变量。
全局变量有 全局作用域: 网页中所有脚本和函数均可使用。
var carName = " 大众";
// 此处可调用 carName 变量
function myFunction() {
// 函数内可调用 carName 变量
}
如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。
以下实例中 carName 在函数内,但是为全局变量。
// 此处可调用 carName 变量
function myFunction() {
carName = "大众";
// 此处可调用 carName 变量
}
没有使用var关键字定义的变量,会被自动创建在全局作用域中,变成全局变量。当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时候会产生意想不到的后果,可能导致你的代码出现BUG。因此你应该总是使用 var 关键字来声明你的变量。
HTML中的全局变量
在 HTML 中, 全局变量是 window 对象: 所有数据变量都属于 window 对象。
//此处可使用 window.carName
function myFunction() {
carName = "大众";
}
JavaScript变量生命周期
JavaScript 变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁。
函数参数
函数参数只在函数内起作用,是局部变量。
return语句
return 语句在函数中是可选的。它用于从函数返回值。
当函数执行完需要结果的计算时,此语句很有用。
function sum(a, b){
return a+b;
}
当JavaScript执行完 return 语句时,该函数停止执行。
如果没有从函数返回任何东西,它将返回 undefined 。