js中作用域
js中作用域
js中作用域二、作用域的注意事项
1.js的作用域是有函数划分的,而不是块儿
var too="test";
if(true){//这是在块中的定义,此时还是全局变量
var too="new test";
}
alert(too=="new test");//return true;
function test()
{
var too="old test";//这是在函数中的定义,此时是局部变量
}
test();
alert(too=="new test");//return true;too并没有改变
2.所有属于全局作用域的变量都是window对象的属性
上面例子中 第一行的 too就是等于 window.too
看下面的例子
function test()
{
too="test";
}
test();
alert(window.too="test");
是不是很奇怪,上面例子中函数中的too是局部变量,在这里就是全局变量了
注意下两个例子的区别,一个通过显示声明 var too
一个隐示声明too="test";
也就是说没有显示定义的变量,它就是全局变量,虽然它可能只能在这个函数内使用。
三、作用域实例
1、
if(true){
var aa= "bb";
}
console.log(aa); //bb
for(var i = 0; i < 100; i++){
//do
}
console.log(i); //100
2、
var bb = '11111';
function aa() {
alert(bb);//undefine
var bb = 'test';
alert(bb);//test
var cc = "test1";
alert(age);//语法错误
}
aa();
3、
var test = '1111111';
function aa() {
alert(test);
}
function bb() {
var test = '22222222';
aa();
}
bb();//alert(1111111);
4、
alert(typeof aa); //function
alert(typeof bb); //undefined
function aa() { //函数定义式
alert('I am 111111111');
};
var bb = function() { //函数表达式
}
alert(typeof bb);//function
5、
function aa(){
var bb = "test";
cc = "测试";
alert(bb);
}
aa();
alert(cc);//测试
alert(bb);//语法报错
四、this指针作用域
在这里列出this在ECMAScript中的不同含义:
(1) 在全局执行环境中使用this,表示Global对象,在浏览器中就是window对象。
(2) 当在函数执行环境中使用this时,情况就有些复杂了。如果函数没有明显的作为非window对象的属性,而只是定义了函数,不管这个函数是不是定义在另 一个函数中,这个函数中的this仍然表示window对象。如果函数显示地作为一个非window对象的属性,那么函数中的this就代表这个对象。 (当然可以使用apply或者call函数来取代默认this的引用,详见[P88])
(3) 当通过new运算符来调用函数时,函数被当做一个构造函数,this指向构造函数创建出来的对象。
五、作用域链
可以被看作一种路径, 沿着这条路径可以确定变量的值.
六、作用域链的特点
- js中作用域
- javascript的作用域详解精简版(浅谈JavaScript 中的延迟加载属性模式)
- 闭包python讲解(详解Python循环作用域与闭包)
- python3函数的使用方法(Python3.5基础之函数的定义与使用实例详解参数、作用域、递归、重载等)
- python全局变量设置(Python3.5局部变量与全局变量作用域实例分析)
- vue中如何判断请求状态码(关于VUE的编译作用域及slot作用域插槽问题)
- javascript作用域实例(JavaScript defineProperty如何实现属性劫持)
- 春天养佛肚竹,做好这几件事,叶绿根壮寓意好 越养越旺家(春天养佛肚竹做好这几件事)
- 律界衣品最好,时尚圈学识数高,41岁的Amal堪称现实版的傲骨贤妻(时尚圈学识数高)
- 刘智泰确认出演《Good Wife》 担纲男一号(刘智泰确认出演Good)
- 《傲骨之战》剧终 律政女魔头Diane,为什么是大女主天花板(傲骨之战剧终律政女魔头Diane)
- 汉族(汉族的祖先是谁)
- 中国有几个名族(中国有几个民族没列入56个民族)
热门推荐
- php连接mysql需要数据源吗(php连接mysql数据库最简单的实现方法)
- EasyUI DateBox设置默认值
- canvas实现滚动列表(Canvas实现贝赛尔曲线轨迹动画的示例代码)
- 个人对云服务器ecs的理解(ecs云服务器怎么搭建网站)
- 怎么用docker中的mysql连接数据库(连接docker里面的mysql失败解决方法)
- sql server新建用户无法登录(sqlserver 因为选定的用户拥有对象,所以无法除去该用户的解决方法)
- php考试复习题(php+mysql开发的最简单在线题库在线做题系统完整案例)
- udp客户端与服务端通信注意事项(UDP简单服务端客户端代码示例)
- 阿里云怎么开启tomcat权限(腾讯云服务器tomcat端口无法访问的解决方法)
- idea生成dockerfile(idea集合docker实现镜像打包一键部署)