JavaScript函数与作用域
函数特点
高内聚,低耦合
基本格式与命名规范
-
函数名首字母小写,后面的首字母均大写
function printHelloWorld(a) { document.write("Hello, World!"); return a; }
-
三种函数定义方式
直接定义函数表达式 function printHelloWorld() { document.write("Hello, World!"); } 调用方式 printHelloWorld(); 命名函数表达式 function test = printHelloWorld() { document.write("Hello, World!"); } 调用方式 test(); 匿名函数表达式 function test = () { document.write("Hello, World!"); } 调用方式 test();
参数
形参与实参
function add(x, y) {
var c = a + b;
document.write(c);
}
形参和实参数目可以不同,但会有一个数组arguments[] 存储实参列表,并且与最初传入的实参相对应
-
形参 > 实参
未给值形参为 undefined,arguments[]中只含有实参个数的参数,在函数体中改变多余的形参,arguments[]中的对应位置参数不变 -
实参 > 形参
后面实参舍弃,arguments[]中只含有实参个数的参数,在函数体中改变形参,arguments[]中的对应位置参数也变function add(a, b, c) { console.log(arguments); } add(1, 2, 3, 4);
形参和实参的利用
function add(a, b, c, d) {
if(add.length > arguments.length) {
console.log("形参多了");
} else if(add.length < arguments.length) {
console.log("实参多了");
} else {
console.log("形参和实参数目相等");
}
}
add(1, null, undefined, "acb");
不定参数个数求多个数字相加的结果
function add(a) {
var result = 0;
for(var tmp = 0; tmp < arguments.length; tmp++) {
result += arguments[tmp];
}
console.log(result);
}
add(1, 2, 3, 4);
将输入的数字逆序并输出对应的汉字形式
function reverse() {
var num = window.prompt("Please input the number:");
var str = "";
for(var i = num.length - 1; i >= 0; i --) {
str += transfer(num[i]);
}
document.write(str);
}
function transfer(target) {
switch(target) {
case "1" :
return "壹";
case "2" :
return "贰";
case "3" :
return "叁";
}
}
reverse();
作用域
全局变量,局部变量