函数声明
第一种函数声明的方式
function f(x){ //指出这是一个函数定义;f代表函数名称;
//括号里的x代表函数的参数,可以有多个参数,用逗号隔开;
//{.....}代表函数体,可以包含若干语句,甚至是空的
if (x > 0) {
return x;
}else {
return -x;
}
}
第二种声明方式
var sum = function (x) {
if (x >= 0) {
return x;
}else {
return -x;
}
};
函数调用
sum(2,3)
避免参数为undefined,可以队参数进行检查
function f1(x) {
if (typeof x !== 'number') {
throw '输入的类型不属于number';
}
if (x >= 0) {
return x;
}else {
return -x;
}
}
变量
js中,定义的变量是有作用域的
不同函数内部的同名变量互相独立,互不影响
- 如果一个var变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量
function sum(){
var x = 0;
x = x + 1;
}
x = x + 2; // ReferenceError! 无法在函数体外引用变量x
- 由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行:
function sum2() {
var x = 1;
function s1() {
var y = x + 1; // showtime可以访问garden的变量x!
}
var z = y + x; // ReferenceError! garden不可以访问showtime的变量y!
}
变量提升
function foo() {
var x = 'Hello ' + y;
console.log(x); //输出结果是Hello undefined
var y = 'baby'
}
这样的代码,声明提升到它所在作用域的顶端去执行,到我们代码所在的位置来赋值。