没有合适的资源?快使用搜索试试~ 我知道了~
(1)作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。 1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用域(function scope),属于局部变量 局部变量优先级高于全局变量 var name=one; function test(){ var name=two; console.log(name); //two } test(); 函数内省略var的,会影响全局变量,因为它实际上已经被重写成了全局变量 v
资源推荐
资源详情
资源评论
js作用域及作用域链概念理解及使用作用域及作用域链概念理解及使用
((1)作用域)作用域
一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。
1. 在在JS中使用的是词法作用域(中使用的是词法作用域(lexical scope)
不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope)
在函数内声明的变量具有函数作用域(function scope),属于局部变量
局部变量优先级高于全局变量
var name="one";
function test(){
var name="two";
console.log(name); //two
}
test();
函数内省略var的,会影响全局变量,因为它实际上已经被重写成了全局变量
var name="one";
function test(){
name="two";
}
test();
console.log(name); //two
函数作用域,就是说函数是一个作用域的基本单位,js不像c/c++那样具有块级作用域 比如 if for 等
function test(){
for(var i=0;i<10;i++){
if(i==5){
var name = "one";
}
}
console.log(name); //one
}
test(); //因为是函数级作用域,所以可以访问到name="one"
当然了,js里边还使用到了高阶函数,其实可以理解成嵌套函数
function test1(){
var name = "one";
return function (){
console.log(name);
}
}
test1()();
test1()之后将调用外层函数,返回了一个内层函数,再继续(),就相应调用执行了内层函数,所以就输出 ”one”
嵌套函数涉及到了闭包,后面再谈..这里内层函数可以访问到外层函数中声明的变量name,这就涉及到了作用域链机制
2. JS中的声明提前中的声明提前
js中的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的。并且,变量在声明之前就可以使用了,这种情况就
叫做声明提前(hoisting)
tip:声明提前是在js引擎预编译时就进行了,在代码被执行之前已经有声明提前的现象产生了
比如
var name="one";
function test(){
console.log(name); //undefined
var name="two";
console.log(name); //two
}
资源评论
weixin_38571992
- 粉丝: 1
- 资源: 939
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功