1、使用function关键字声明函数
使用function关键字声明的函数属于静态函数,声明之后函数体的内容不能改变
重复声明函数的话,后续的函数会覆盖先前的函数
2、使用**Function()**构造函数创建函数
使用Function()构造的函数属于动态函数
常把函数名用驼峰命名法命名为动词
function是声明函数的关键字,必须小写
语法格式:
有参函数:
function 函数名 (参数1......参数n)
{
JS代码;
}
无参函数
function 函数名()
{
JS代码;
}
匿名函数与普通函数一样,只是缺少函数名,匿名函数应用广泛,灵活性强
方式一(重点):
赋值给变量
var customFunction = function(arg0 , arg1){
document.write(arg0 , 'and' , arg1); //打印:Java+JavaScript
};
customFunction('Java','JavaScript');
var object = {
greet:function(name){
document.write(name); //打印:JavaScript
},
};
object.greet('JavaScript');
方式二:
直接用
(function (p1 , p2) { alert(p1 + p2); } (20 , 30)); //输出50
像C语言一样,直接使用函数名进行调用
方法调用是指函数作为对象的属性值,通过对对象获取属性值的方式调用。也称为方法或成员函数。
函数1中嵌套函数2,只能在函数1中调用函数2,无法在函数1外调用函数2
嵌套函数是将函数内部可以重复使用的代码或相对独立的代码封装成一个逻辑单元,避免其他元素干扰
限定一段代码中所用到的名字的作用范围就叫作用域
作用于所有代码执行的环境(整个 script)标签内部)或者一个独立的js 文件
在 标签里直接声明的变量就是全局变量
因为全局变量在任意位置都可以被获取和修改,所以应当多用局部变量,少用全局变量
作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。
在函数内声明的变量称为局部变量
内部变量优先级高于外部变量,依次查询外部嵌套函数,最后查询全局变量和全局属性
JS中没有块级作用域
如java或C++里的
if( )
{
int a=1;
cout<
而JS
if( )
{
var a=1;
console.log(num); //输出1
}
console.log(num); //输出1