函数的创建方法与变量的作用域理解

一、创建函数3种方法

1 、函数声明
function 函数名(){
}

2 、函数表达式
var 函数名 = funciton(){
}
var fn = function(){
}
fn()
3、构造函数的创建
var 函数名 = new Function(){}

注意:函数声明和函数表达式的区别
1.函数声明可以在任意可见位置调用(即在函数定义的前面,后面都可以调用)
2函数表达式必须先定义后调用
3.函数声明可以预加载,也就是说函数声明有函数提升的作用

二、变量作用域!!!

用域分类:

全局作用域:

1.在任意位置都可以访问的范围(函数外部,函数内部都可以)
2.全局变量自动会追加到window对象下

局部作用域

与全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,在一些地方也会看到有人把这种作用域称为函数作用域。
如:
var color = "blue";
function getcolor(){
var color = "red";  
return color;
}
alert(getcolor());   //red;
alert(color);      //blue;

块级作用域

任何一对花括号 {} 中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。
如闭包:
闭包 在一个函数中定义的变量,当这个函数调用完后,变量会被销毁,我们可以用这个特性来模拟出JS的块级作用域。
function test (){
   (function(){
      for(var i=0; i<4; i++){
      }
   })()
   alert(i)
}
test()
这时再次运行,会弹出‘i’未定义的错误,我们把for语句块放到了一个闭包之中,然后调用这个函数,当函数调用完毕,变量i自动销毁,因此,我们在块外便无法访问了。

作用域链:

当代码在一个环境中执行时,会创建变量对象的一个作用域链(scope chain,不简称sc)来保证对执行环境有权访问的变量和函数的有序访问。作用域第一个对象始终是当前执行代码所在环境的变量对象(VO)

类似异步的面试题有几种问法:

你说一下JS的执行机制
同步:一行行执行,前面代码没执行完,就不会执行后面的程序
异步:Event Loop
JS是单线程的

JS中哪些操作会产生异步:定时器,dom事件绑定,ajax请求异步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值