<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script>
//1.
function myFunction(){
alert(1);
}
//调用函数
//myFunction();
//同时函数也是对象
//alert(myFunction.toString());//返回函数原代码
//alert(myFunction.length);//返回函数形参的个数
//2.再javascript中声明匿名函数
var f1 = function(){alert('这是一个匿名函数!')};
//f1();
//f1 = 100;
function f2(fn){
alert('这是一个f2函数');
fn();
}
//传递一个匿名函数
//f2(function (){ alert('传递了一个匿名函数!') });
//直接调用一个匿名函数,在编写函数的同时调用函数
// (function (x, y){
// alert(x+y);
// })(10, 20);
//定义匿名函数
var f3 = new Function('x', 'y', 'z', 'alert(x+y+z)');
//f3(10, 20 , 30 );
//4.
var x = 1 , y = 0 , z = 0;
var add = function (n){ n = n + 1 ; return n};
y = add(x);
add = function(n){ n = n + 3; return n };
z = add(x);
alert(y + '......' + z);
</script>
</head>
<body>
</body>
</html>
<!--
1.函数即是函数也是一个对象,所以有属性,占内存。
2.把一个匿名函数赋值给了一个变量,此时直接调用"变量名()"可以直接调用函数, 但是变量并不是直接声明的函数名, 变量还可以赋值其他的对象。
3.通过New Function(arguments)定义的匿名函数的参数arguments,不会作为全局变量, 参数的作用域只在于函数作用域范围,不同于eval(arguments)函数中
定义的参数作用域范围为全局。
4.匿名函数为赋值语句时, 没有预解析功能 , 所以会从上到下依次执行.
-->