前端开发工程师-JavaScript-4
函数:用来存储代码块,可以封装多条重复操作,可以在任意位置直接调用执行
使用函数的步骤:声明、调用
声明:
function 函数名(参数1,参数2,...,参数n){ 函数体 }
注意:函数必须使用function关键字定义,一般情况下函数在没有调用的时候不会执行;函数在声明的时候,function后面圆括号()和大括号{}必不可少
调用:
普通函数调用:函数名()
事件调用: 函数名后面不加圆括号
函数表达式:函数名称可以省略,执行时只有执行到某一句时,才会对其进行解析
// sum();
function sum(){
var a = 1;
var b = 2;
alert(a+b);
}
oBtn.onclick = sum;
oBtn2.onclick = function(){//匿名函数:给特定的事件或变量使用,没有函数名
alert(5);
};
// a();//报错 a is not a function
var a = function fn(){
alert('fn');
};
a();
函数的参数:
形参:形式参数,调用函数时进行的参数传递;如果函数在调用时,没有传参,那么参数值为undefined
实参:实际参数
函数特点:具有封装性,能够重复调用
封装性:想要实现某种功能,可以把核心代码整理出来,放在函数中,方便以后调用;调用时不必关心函数中的代码,只需要关心如何调用就可以了
封装步骤:1)提出需求 2)实现核心代码 3)向函数中传入不同的参数实现封装
函数的参数写在函数名后面的圆括号中,如果函数中有多个参数,每个参数之间用逗号隔开
参数的类型:可以是任意数据类型,但是使用null和undefined作为参数没有意义,有时还会报错,因此不建议使用
arguments:可以用来检测函数参数的个数——表示当前函数的所有实参的集合
函数的重名问题:
* 声明函数时,如果两个函数名称一致,后面的函数会覆盖前面的函数;函数名不要和变量名重名(报错信息:fn is not a function)
函数的作用域:指代了他们在什么样的上下文中执行
js解析器:浏览器中用来执行js程序
1)找内容(根据关键词:var function 参数)
a = undefined;---> a = 1;//所有变量在正式运行之前,都会提前赋一个值为未定义
fn = function fn(){ console.log(a);}//所有的函数在正式运行之前,都是一个整的代码块
这个过程叫js预解析
2)逐行解析代码
正式读代码时,会先从之前解析的库中查找,看到的第18行代码会显示undefined;
执行到第19行代码时,会修改库中的解析值,将a的值1;
var a = 1; //全局变量:直接在script标签下,函数外部声明的变量
function fn() {
alert(a); //undefined
var a = 2; //局部变量:函数内部定义的,只能在函数内部访问
}
fn();
alert(a); //1
function fn(){
var a = 1;//局部
b = 2;//全局,声明变量时,省略var创建的是一个全局变量。函数内部可以访问到外面的全局变量和全局函数,是
因为有作用链——向上层查找
}
fn();
// alert(a);//报错 a is not defined
alert(b);//2
DOM标准中提供了一个获取当前对象样式的全局方法:
* getComputedStyle(obj).width 获取元素obj的宽度
在IE中有自己的获取DOM元素属性的方法:
* obj.currentStyle.width
function getStyle(obj,attr){
if(window.getComputedStyle){
return getComputedStyle(obj)[attr];
}else{
return obj.currentStyle[attr];
}
}
</scrip
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭