<!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.匿名函數爲賦值語句時, 沒有預解析功能 , 所以會從上到下依次執行.
-->