//这是在浏览器环境下,chrome下

var n =2 ;
var obj={
n:4,
fn1:(function(){
console.log("fn1->this ="+this); //这里立即执行时,this是window
console.log("fn1->this.n = "+this.n); //这里是2
this.n *=2; n = n*2; //这里的n是取下面没赋值的n,所以结果是nan,当变量在使用时还没赋值,但是下面有var语句包含这个变量,这时变量是undefiend
console.log("fn1->n = "+n); //nan
var n = 3; //这里n才赋值
return function() {
this.n*=2; //这里是在下面fn1()调用时时执行,所以这里的this是window
console.log("匿名函数里的this.n="+this.n); //
n *=3; //这里取外层作用域的3
console.log("匿名函数里的n="+n); //
}
}
)()
} var fn1 = obj.fn1;
console.log(obj.n); //
console.log(n); //
fn1();
console.log(n) //
console.log(obj.n); //
//node 环境下

var n =2 ;
var obj={
n:4,
fn1:(function(){
console.log("fn1->this ="+this); //这里的this是global对象
console.log("fn1->this.n = "+this.n); //global没有n,所以n是underfined
this.n *=2; //这里是nan,因为n是undefined,所以乘以2是nan n = n*2; //同理下面才给n赋值这里的n*2是nan
console.log("n=n*2,n is "+n);
var n = 3;
return function() {
this.n*=2;
console.log("匿名函数里的this.n="+this.n); //global没有n,所以这里是nan
n *=3;
console.log("匿名函数里的n="+n); //9 引用上面 var n=3 这里的3
}
}
)()
} var fn1 = obj.fn1;
console.log(obj.n); //4
console.log(n); //2
fn1();
console.log(n) //2
console.log(obj.n); //4

  

window和nodejs作用域区别(待续)的更多相关文章

  1. $(document).ready() 与 window.onload 之间的区别

    1.执行时机 window.onload 是网页中所有的元素都加载到浏览器后才执行 $(document).ready() 是dom完全就续就可以调用 例如:如果给一副图片添加点击事件,window. ...

  2. window.location.href 和 window.location.replace 的区别

    window.location.href  和  window.location.replace 的区别 1.window.location.href=“url”:改变url地址: 2.window. ...

  3. window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)

    window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)nodemon --watch 'app/**/*' -e ts --exec ...

  4. jsp的4个作用域区别( pageScope、requestScope、sessionScope、applicationScope)

    简单描述 page里的变量没法从index.jsp传递到test.jsp.只要页面跳转了,它们就不见了. request里的变量可以跨越forward前后的两页.但是只要刷新页面,它们就重新计算了.  ...

  5. 前端node面试题之---对比JS和NodeJS的区别

    区别: 1.JS运行在浏览器端,用于用户的交互效果,NodeJS运行在服务器端,用于服务器的操作,例如,Web服务器创建,数据库的操作,文件的操作等 2.JS运行在浏览器端,存在多个JS解释器,存在兼 ...

  6. javascript的window.ActiveXObject对象,区别浏览器的方法

    (window.ActiveXObject)的作用,用来判断浏览器是否支持ActiveX控件,如果支持ActiveX控件,我们可以利用var xml=new ActiveXObject("M ...

  7. window.location.href和window.location.replace的区别

    有3个html页面(.html, .html, .html). 进系统默认的是1.html ,当我进入2.html的时候, .html里面用window.location.replace(" ...

  8. JavaScript中,window.opener是什么?window.parent和window.opener有啥区别?

    来自CSDN的问答: window.opener是什么啊? ++++++++++++++++++++++++++++++++++++++++++++++++++ 弹出本窗体的句柄 比如你想点一个按钮直 ...

  9. JS中 window.location 与window.location.href的区别

    疑惑:window.location='url'  与window.lcoation.href='url'效果一样,都会跳转到新页面,区别在哪?查得的资料如下: 1:window.location是页 ...

随机推荐

  1. mysql 索引过长1071-max key length is 767 byte

    问题 create table: Specified key was too long; max key length is 767 bytes   原因 数据库表采用utf8编码,其中varchar ...

  2. struts2 的简单实例应用

    功能:本实例实现的功能是从输入界面输入用户名和密码,若用户名和密码正确转到成功界面,否则转到失败界面. 1)在创建了一个JavaWeb工程后,导入struts2的核心支持包库. 2)web项目右击-M ...

  3. JavaScript中“javascript:void(0) ”是什么意思

    来源: <a href="javascript:test();void(0);">here</a> 此处:Javascript中void是一个操作符,该操作 ...

  4. Q7: Unique Binary Search Trees

    问题描述: Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For ...

  5. Linux下printf格式符%d、%lld、%llx、%u等【转自CSDN博客】

    来源:http://blog.csdn.net/anycell/article/details/6966520 %d 有符号32位整数 %lld 有符号64位证书 %llx有符号64位16进制整数 % ...

  6. Nginx 499错误的原因及解决方法

    今天进行系统维护,发现了大量的499错误, 499错误 ngx_string(ngx_http_error_495_page), /* 495, https certificate error */n ...

  7. 【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析

    作者: 牛A与牛C之间 时间: 2013-11-21 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第6篇:Xilium CefGlue 关于 CLR Object 与 JS ...

  8. Jmeter使用

    好久没有试过Jmeter了,下载个新版本试试,顺便温习一下. 1. 如何修改JMeter语言环境 在菜单栏中通过“选项”–“选择语言”选了英文后,下次登录JMeter,还是显示的中文,修改语言无效.关 ...

  9. 延迟加载、异步加载js

    defer为true:延迟加载脚本,在文档完成解析完成开始执行,并且在DOMContentLoaded事件之前执行完成. async(HTML5新增的属性)为true:异步加载脚本,下载完毕后再执行, ...

  10. 文件/文件夹比较工具 beyond compare 3.3.10