<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>函数的=种类</title>
<script type="text/javascript">
//1.创建构造函数
var fun1 = new Function();
console.log(typeof fun1);//会出现function
//2.使用函数声明来创建一个函数
/*
语法:
function 函数名([形参1,形参2...形参N]){
语句......
}
*/
function fun2(){
console.log("这是使用函数声明来创建的函数");
alert("哈哈哈哈哈");
document.write("向网页中输入代码")
}
//调用函数
fun2();
/*
3.使用函数表达式来创建函数
var 函数名 = function([形参1,形参2...形参N]){
语句....
}
*/
var fun3 = function(){
console.log("这是使用匿名函数创建的函数");
alert("我也会出来的")
}
fun3();
</script>
</head>
</html>
注意:还有一种是回调函数,由我们创建,不由我们调用,而且只执行一次,callback();
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>实参可以是任意值</title>
<script type="text/javascript">
//判断是不是偶数
function isOu(num){
return num % 2 ==0;
}
var result = isOu(7);
// console.log("result ="+result);
//定义一个函数,可以根据半径计算一个圆的面积,并返回计算结果
function mianji(r){
return 3.14*r*r;
}
result = mianji(6);
// console.log("面积是:"+ result);
/*创建一个函数,可以在控制台中输出一个人的信息
可以输出name ,age,gender,address
*/
function sayHello(o){
console.log("我是"+o.name+",今年我"+o.age+"岁了,我是"+o.gender+"人,我住在"+o.address);
}
// var a = sayHello("猪八戒",28,"男","高老庄");
var obj = {
name:"孙悟空",
age:18,
address:"花果山",
gender:"男"
}
sayHello(obj);
/*
实参可以是对象,也可以是函数
*/
function fun(a){
console.log("a ="+a);
// a(obj);
}
fun(sayHello);
fun(mianji);
/*
mianji() -调用函数,相当于使用的函数的返回值
mianji -函数对象 相当于使用这个函数
*/
</script>
</head>
</html>
注意:函数的参数可以是任意值,
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>立即执行函数</title>
<script type="text/javascript">
(function(){
alert("我是立即执行函数");
console.log("我是立即执行函数");
})();
(function(a,b){
console.log("a = "+a);
console.log("b = "+b);
})(123,456);
</script>
</head>
</html>
注意:还有立即执行函数
解析器在调用函数每次都会向函数内部传递一个隐含的参数
这个隐含的参数就是this,this指向的是一个对象,
这个对象我们成为函数执行的上下文对象
根据函数的调用方式的不同,this会指向不同的对象,
1.以函数的形式调用时,this永远都是window
2.以方法的形式调用时,this就是调用方法的那个对象