函数Function
函数也是一个对象,函数中可封装一些功能(代码),在需要时可以执行这些功能(代码)
使用typeof检查一个函数对象时,会返回function
创建一个函数对象
var fun=new Function()
console.log(typeof fun)// function
可以将要封装的代码以字符串形式传递给构造函数
var fun1= new Function("console.log('hello,这是我的第一个函数');")
//封装到函数中的代码不会立即执行,函数中的代码会在函数调用的时候执行,调用函数的语法:函数对象()
//当调用函数时,函数中封装的代码会按照顺序执行
fun1();// hello,这是我的第一个函数,调用几次,会执行几次
使用函数声明来创建一个函数
语法:function 函数名([形参1,形参2,…形参N]){
语句…
}
function fun2(){
console.log('这是我的第二个函数~~~');
alert('哈哈哈');
document.write("~~~~~~")
}
//调用
fun2()
使用函数表达式来创建一个函数
var 函数名=function(形参1,形参2,…形参N){
语句…
}
//匿名函数
function(){
console.log('这是我的第三个函数,匿名函数')
}
var fun3=function(){
console.log('这是我的第三个函数,匿名函数')
}
//调用
fun3()
多个形参之间使用,隔开,声明形参就相当于在函数内部声明了对应的变量,调用函数时,解析器不会检查实参的类型,解析器也不会检查实参的数量。
创建一个函数,用来计算三个数的和
可以使用return 来设置函数的返回值
语法:
return 值
return后的值将会作为函数的执行结果返回,可以定义一个变量来接收这个结果,在函数中return 后的语句都不会被执行。如果return 后不跟任何值,相当于返回一个undefined,如果函数中不写return,则也会返回 undefined,return 后可以跟任意类型的值。
function sum(a,b,c){
var d=a+b+c
return d
}
var result=sum(1,2,3)
console.log("result="+result)
实参可以是任意的数据类型,也可以是一个对象,当我们参数过多时,可以将参数封装到一个对象中,然后通过对象传递。
实参也可以是一个函数
continue用于跳过当次循环,break用于跳过当前循环,return 可以结束整个函数
函数可以作为对象的属性值
var obj=new Object()
//向对象中添加属性
obj.name='孙悟空'
obj.age=18
//对象的属性值可以是任意的数据类型,也可以是一个函数
obj.sayName=function(){
console.log(obj.name)
}
console.log(obj.sayName)//function(){}
//调用函数
obj.sayName()//孙悟空
//函数也可以作为对象的属性,如果一个函数作为一个对象的属性保存,那么我们称这个函数是这个对象的方法。调用这个函数就说调用这个对象的方法(method),但是它只是名称上的区别没有其他的区别
var obj2={
name:"猪八戒",
age:18,
sayName:function(){
console.log(obj2.name)
}
}
obj2.sayName()//猪八戒
枚举对象中的属性
使用for…in 语句,对象中有几个属性,循环就会执行几次,每次执行时,会将对象中的一个属性的名字赋值给变量
语法:
for(var 变量 in 对象)
作用域
作用域指一个变量的作用的范围,在JS中一共有两种作用域:
1.全局作用域:直接编写在script标签中的JS代码,都在全局作用域,全局作用域在页面打开时创建,在页面关闭时销毁。在全局作用域中,有一个全局对象window,它代表浏览器的窗口,由浏览器创建,可以直接使用。在全局作用域中,创建的变量,都会作为window对象的属性保存,创建的函数,都会作为window的方法。
全局作用域的变量都是全局变量,在页面的任意部分都可以被访问的到
//在全局作用域中,创建的变量,都会作为window对象的属性保存
var b=20,
console.log(window.b)