1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 </head> 7 <body> 8 <button>按钮1</button> 9 <button>按钮2</button> 10 <button>按钮3</button> 11 </body> 12 </html> 13 <script> 14 /** 15 * 《函数》 16 * 匿名函数 17 * 语法格式:function(){} 18 * 只写匿名函数在JS报错 19 * 20 * 函数创建 21 * 1.函数的声明 22 * function fn(){ 23 * } 24 * 2.函数表达式 25 * var fn = function(){ 26 * } 27 * 28 * 函数命名建议: 29 * 动词+名词 30 * 31 * 函数参数: 32 * 和PHP一样,分为形参和实参 33 * 34 * 函数返回值: 35 * 关键词:return 36 * !与PHP区别:JS函数内部都有返回值,默认返回undefined 37 * 38 * arguments对象 (实参在函数体内的集合) 39 * 所有函数都内置了一个arguments对象,是一个伪数组. 40 * 41 * 自调用函数 42 * (function(){})(); 43 * ;(function(){})(); 严谨写法 44 * 自调用函数相当于是沙箱,小闭包,内部创建的变量,函数和外部不受关联。 45 * 作用:防止全局变量污染。 46 * 47 */ 48 49 // 全局变量,在<script> 顶级创建的变量是全局变量 50 /* var data = "CCTV"; 51 ;(function () { 52 alert(data); // "CCTV" 53 })(); 54 ;(function () { 55 alert(data); // "CCTV" 56 })(); 57 alert(data); // "CCTV"*/ 58 59 60 61 /*var data = "CCTV"; 62 ;(function () { 63 var data = "湖南卫视"; 64 alert(data); // "湖南卫视" 65 })(); 66 ;(function () { 67 alert(data); // "CCTV" 68 })(); 69 alert(data); // "CCTV"*/ 70 71 72 73 /* var data = "CCTV"; 74 ;(function () { 75 //函数体内变量如果没有var声明,它会逐级往上查找, 76 //如果外面还是没有声明,JS内部会把这个变量设置成全局变量 77 //!!!! 这是很危险的操作,全局变量污染很容易影响到其他同事的代码 78 data = "湖南卫视"; 79 alert(data); // "湖南卫视" 80 })(); 81 ;(function () { 82 //函数体内变量如果没有var声明,他会逐级往上查找 83 data = "广东卫视"; 84 alert(data); // "广东卫视" 85 })(); 86 alert(data); // "广东卫视"*/ 87 88 89 90 /*//变量作用域-事件1 91 var btns = document.getElementsByTagName('button'); 92 btns[0].onclick = function () { 93 var tv = "湖南卫视"; 94 } 95 alert(tv); // tv is not defined*/ 96 97 98 /* //变量作用域-事件2 99 var btns = document.getElementsByTagName('button'); 100 btns[0].onclick = function () { 101 // 事件处理程序内的函数,如果不触发,永远不执行 102 tv = "湖南卫视"; 103 } 104 alert(tv); // tv is not defined*/ 105 106 107 /* //变量作用域-事件3 108 var btns = document.getElementsByTagName('button'); 109 btns[0].onclick = function () { 110 // 事件处理程序内的函数,如果不触发,永远不执行 111 tv = "湖南卫视"; // 这样会污染全局变量,不推荐使用 112 } 113 btns[1].onclick = function () { 114 alert(tv); // 事件是触发才执行,这里要分情况 115 // 1,先点击按钮1,再点击按钮2,弹出湖南卫视 116 // 2,先点击按钮2,不点击按钮1,控制台报错:dv is not defined 117 }*/ 118 119 120 /* //变量作用域-事件3 121 var btns = document.getElementsByTagName('button'); 122 var tv; //定义变量tv 123 btns[0].onclick = function () { 124 // 事件处理程序内的函数,如果不触发,永远不执行 125 tv = "湖南卫视"; // 这样会污染全局变量,不推荐使用 126 } 127 btns[1].onclick = function () { 128 alert(tv); // 事件是触发才执行,这里要分情况 129 // 1,先点击按钮1,再点击按钮2,弹出湖南卫视 130 // 2,先点击按钮2,不点击按钮1,弹出undefined 131 }*/ 132 </script>