函数:
函数调用两种方法:
按钮调用:<button οnclick="fn()"></button>
函数名直接调用:fn()
传递函数两种方法:
按钮里传递:<button οnclick="fn(a,b)"></button>
函数名里直接传参:fn(a,b)
变量:
全局变量:在函数外声明的变量,网页上的所有脚本和函数都能访问它。
作用域:在全局中都能被访问。(所有window对象的属性拥有全局作用域,所有末定义直接赋值的变量自动声明为拥有全局作用域。)
生存期:全局变量在页面关闭后被删除。
局部变量:在函数内部声明的变量(必须使用var或let或const来定义一下,如果不使用就会变成全局变量。),只能在函数内部访问它。(可以在不同的函数中使用名称相同的局部变量。)
作用域:只能在函数内部被访问。
生存期:局部变量在函数运行以后被删除(垃圾回收机制 简称 GC),变量被释放了,所以会提高性能。
作用域链:从里到外,就近原则。(先从当前寻找,如果找不到就会一层一层向上寻找,直到找到,如果一直向上寻找也找不到,就会报错。且具有就近原则,如果当前的作用域下,就存在变量,那么就优先找自己作用域下的变量。)
闭包:
闭包就是在函数的内部,再定义一个函数。
用途:可以读取函数内部的变量,让这些变量的值始终保持在内存中。
缺点:1、闭包会在父函数外部,改变父函数内部变量的值。2、闭包会使得函数中的变量都被保存在内存中,内存消耗很大。
return:函数将值返回调用它的地方(使用时,函数会停止执行,并返回指定的值后面的代码就不会执行了)。
isNaN():用于检查其参数是否是非数字,不是数字 返回true,是数字 返回false。(isNaN('123') 会把字符串123转成数字123 来进行校验 返回 false)
小练习:(分辨弹出框内的a为何值)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// var a = 123
// function fun() {
// alert("fun:" + a)
// }
// fun()
// alert("外部:" + a)
// var a = 123
// function fun() {
// alert("fun:" + a)
// var a = 456
// }
// fun()
// alert("外部:" + a)
// var a = 123
// function fun() {
// alert("fun:" + a)
// window.a = 456
// }
// fun()
// alert("外部:" + a)
// var a = 123
// function fun(a) {
// alert("fun:" + a)
// a = 456
// }
// fun()
// alert("外部:" + a)
// var a = 123
// function fun(a) {
// alert("fun:" + a)
// a = 456
// }
// fun(123)
// alert("外部:" + a)
</script>
</body>
</html>
总结:望各位大佬指正。