js作用域
来源:互联网 发布:强矩阵 编辑:程序博客网 时间:2024/06/07 15:27
//js中正常模式下只有全局作用域和函数作用域,严格模式下,还有eval作用域
//函数作用域
var scope="global";var t=function(){
console.log(scope);
var scope="local"
console.log(scope);
};
t();
var name="global";
if(true){
console.log(name);
var name="local";
}
console.log(name);
var n=1,m=2;
function add(){
console.log(n+m);
var n=3;
console.log(n+m);
}
add();
function t2(flag){
if(flag){
var s="ifscope";
for(var i=0;i<2;i++)
;
}
console.log(i);
console.log(s);
}
t2(true);
//函数作用域的特性 : 局部变量在整个函数体始终是有定义的,我们可以将变量声明“提前”到函数体内,
//同时变量初始化还在原来位置。
//变量作用域
function t(flag){
if(flag){
s="ifscope";
for(var i=0;i<2;i++){
;
}
console.log(i);
}
}
//js中没有用var声明的变量都是全局变量,而且都是顶层对象的属性。
//当用var声明一个变量是,创建的这个属性是不可配置的,也就是说无法通过delete运算符删除
//var name=1 ->不可删除
//sex=”girl“ ->可删除
//this.age=22 ->可删除
//作用域链
name="lwy";
function t3(){
var name="tlwy";
function s(){
var name="slwy";
console.log(name);
}
function ss(){
console.log(name);
}
s();
ss();
}
t3();
//作用域链都是从当前函数开始-->嵌套函数-->全局对象,不与同级别的函数有关
//当执行s时,将创建函数s的执行环境(调用对象),并将该对象置于链表开头,然后将函数t的调用对象链接在
//之后,最后是全局对象。然后从链表开头寻找变量name,很明显
//name是"slwy"。//但执行ss()时,作用域链是: ss()->t()->window,所以name是”tlwy"
//with语句,主要用来临时扩展作用域链,将语句中的对象添加到作用域的头部
person={name:"yhb",age:22,height:175,wife:{name:"lwy",age:21}};
with(person.wife){
console.log(name);
}
阅读全文
0 0
- js数据类型+js作用域
- JS 无块级作用域
- js 变量作用域
- js作用域链
- js cookie 作用域
- js作用域学习
- js变量作用域
- js作用域,内部
- JS作用域链
- js作用域
- JS作用域链
- js作用域
- JS函数作用域
- js 延长作用域
- JS作用域
- JS中作用域
- js作用域
- js变量作用域
- Google 开源的 Android 排版库:FlexboxLayout
- C++继承权限问题讲解最全面的
- CSS-同一个li下,图片和文字一起,如何使得全部垂直居中
- [数论 斐波那契] 51nod1355. 斐波那契的最小公倍数
- VS2010版快捷键
- js作用域
- 【Linux学习笔记】33:环境变量配置文件简介
- 机器学习和计算机视觉库
- 【Java基础】概述
- [POI2000]病毒 [洛谷]P2444
- Codeforces849A Odds and Ends
- 利用Python创建链接mysql数据库个性化对象
- spark partitioner使用技巧
- 二叉树的最大深度