JavaScript种作用域初识
多种函数的创造和执行方法
有名函数
<script>
len fun1=function(){}//函数名fun1
function fun2(){}//函数名fun2
</script>
事件函数和函数名加括号执行
元素.事件名称=函数名称。
<div></div>
<script>
//事件函数
let oDiv=document.getElementsByTagName("div");
function fun(){
console.log(this.innerHTML);
oDiv.onclick=fun;
/*
元素.事件名称=函数名称。
*/
//函数名加括号执行
var fun1=function(){
console.log(1);
}();//函数立即执行输出1,函数变量fun1的结果是undefined
//这里首先可以看作是一个赋值语句,等号左边变量fun1,等号右边是一个匿名函数,而且这个函数还执行了。所以变量fun1的值是右侧匿名函数的返回值,而匿名函数又没有返回值,所以是undefined。
</script>
IIFE(立即执行函数表达式)
实现:
运算符 函数;
这种类型的立即执行函数其实可以从计算公式去理解,
比如:
function add(){
return 3;
}
var a=1+add();//结果是4
add函数执行一次返回3,那么我们去掉1
var b=+add();//b就等于3
我们不如把变量去掉,那么就是+add();它依然会执行,然后在内存中存了一个数据3.
全局作用域
一个页面就是一个完整的执行环境,里面就存在唯一的一个作用域就是全局作用域,全局作用域的本质就是全局对象的属性。
浏览器的全局对象是window,我们申明的变量都相当于在全局对象window下添加属性。
<script>
var a=2;
console.log(a===window.a)//true
</script>
函数作用域
函数作用域。函数里面所有定义的新变量只有在函数作用域内才可以调用,外部访问函数作用域的变量,但是函数内部可以访问函数外部的变量。
不同函数的作用域不一样。
<script>
var a2="这是foo外";
function foo(){
var a1="这是foo内";
console.log(a1,a2);
}
foo()//"这是foo内" "这是foo外"
console.log(a1,a2)//报错
</script>
函数参数的多种方式之标准传参
函数参数的多种方式之arguments
函数在定义是规定了参数,那么函数在执行的时候会在定义参数的变量同时把传入进来的参数存储在argument数组中。
589512013302)]
函数参数的多种方式之arguments
函数在定义是规定了参数,那么函数在执行的时候会在定义参数的变量同时把传入进来的参数存储在argument数组中。