目录
定义在函数外部是全局变量,网页上的所有脚本和函数都能访问它。
(3)最外层函数(例如:下面的fn)和在最外层函数外面定义的变量拥有全局作用域
一、常用系统函数
例:parseInt("abc") ===> NaN 不是一个数字
isNaN()
用于检查其参数是否是非数字,会把字符串数字转为数字
不是数字 返回turn
是数字 返回false
二、无参函数
1、第一种调用方式:按钮调用
<body>
<!-- 第一种调用方式 -->
<button onclick="fn()"></button>
</body>
2、第二种调用方式:fn() 函数名直接调用
函数可以自己执行,不一定总是使用点击事件
<script>
//第二种调用方式
//函数可以自己执行,不一定总是使用点击事件
function fn(){
alert(1)
}
fn()
</script>
三、传递参数
1、按钮里传递
2、函数名里直接传参:fn(a,b)
四、return
1、函数通过return将值返回调用它的地方
2、函数会停止执行,并返回指定的值
五、变量
1、全局变量
定义在函数外部是全局变量,网页上的所有脚本和函数都能访问它。
作用域:在全局中都能被访问。(所有window对象的属性拥有全局作用域,所有末定义直接赋值的变量自动声明为拥有全局作用域。)
生存期:全局变量在页面关闭后被删除。
2、局部变量
在函数内部声明的变量(必须使用var或let或const来定义一下,如果不使用就会变成全局变量。),只能在函数内部访问它。(可以在不同的函数中使用名称相同的局部变量。)
作用域:只能在函数内部被访问。
生存期:局部变量在函数运行以后被删除(垃圾回收机制 简称 GC),变量被释放了,所以会提高性能。
六、作用域
作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期
1、全局作用域
所有window对象的属性拥有全局作用域
(1)系统给默认的全局的对象 window
(2)所有末定义直接赋值的变量自动声明为拥有全局作用域
(3)最外层函数(例如:下面的fn)和在最外层函数外面定义的变量拥有全局作用域
2.局部作用域
和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到
七、作用域链
从里到外,就近原则。(先从当前寻找,如果找不到就会一层一层向上寻找,直到找到,如果一直向上寻找也找不到,就会报错。
且具有就近原则,如果当前的作用域下,就存在变量,那么就优先找自己作用域下的变量。)
八、闭包
一函数就是一个闭包, 闭包就是为了访问函数内部的变量
用途:可以读取函数内部的变量,让这些变量的值始终保持在内存中。
缺点:1、闭包会在父函数外部,改变父函数内部变量的值。
2、闭包会使得函数中的变量都被保存在内存中,内存消耗很大。