window和nodejs作用域区别(待续)
//这是在浏览器环境下,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作用域区别(待续)的更多相关文章
- $(document).ready() 与 window.onload 之间的区别
1.执行时机 window.onload 是网页中所有的元素都加载到浏览器后才执行 $(document).ready() 是dom完全就续就可以调用 例如:如果给一副图片添加点击事件,window. ...
- window.location.href 和 window.location.replace 的区别
window.location.href 和 window.location.replace 的区别 1.window.location.href=“url”:改变url地址: 2.window. ...
- window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)
window下nodejs用nodemon启动koa2项目(用cmd启动不了,要用Git Bash Here 启动才可以)nodemon --watch 'app/**/*' -e ts --exec ...
- jsp的4个作用域区别( pageScope、requestScope、sessionScope、applicationScope)
简单描述 page里的变量没法从index.jsp传递到test.jsp.只要页面跳转了,它们就不见了. request里的变量可以跨越forward前后的两页.但是只要刷新页面,它们就重新计算了. ...
- 前端node面试题之---对比JS和NodeJS的区别
区别: 1.JS运行在浏览器端,用于用户的交互效果,NodeJS运行在服务器端,用于服务器的操作,例如,Web服务器创建,数据库的操作,文件的操作等 2.JS运行在浏览器端,存在多个JS解释器,存在兼 ...
- javascript的window.ActiveXObject对象,区别浏览器的方法
(window.ActiveXObject)的作用,用来判断浏览器是否支持ActiveX控件,如果支持ActiveX控件,我们可以利用var xml=new ActiveXObject("M ...
- window.location.href和window.location.replace的区别
有3个html页面(.html, .html, .html). 进系统默认的是1.html ,当我进入2.html的时候, .html里面用window.location.replace(" ...
- JavaScript中,window.opener是什么?window.parent和window.opener有啥区别?
来自CSDN的问答: window.opener是什么啊? ++++++++++++++++++++++++++++++++++++++++++++++++++ 弹出本窗体的句柄 比如你想点一个按钮直 ...
- JS中 window.location 与window.location.href的区别
疑惑:window.location='url' 与window.lcoation.href='url'效果一样,都会跳转到新页面,区别在哪?查得的资料如下: 1:window.location是页 ...
随机推荐
- 11g新特性与12c新特性
1. 11g新特性概图 管理新特性> 开发新特性> 2. 12c 新特性概图
- 关于HTTP协议
一.HTTP协议概念 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的 ...
- js键盘事件全面控制
js键盘事件全面控制 主要分四个部分第一部分:浏览器的按键事件第二部分:兼容浏览器第三部分:代码实现和优化第四部分:总结 第一部分:浏览器的按键事件 用js实现键盘记录,要关注浏览器的三种按键事件类型 ...
- navicat for mysql 10.1.7注册码
最近提示用的navicat for mysql 10.1.7过期了.网上翻了一翻,发现了一个可用的注册码,分享出来.多一个链接,给别人多一份选择 姓名,组织随意, 注册码都是:NAVN-LNXG-XH ...
- 类型参数约束 : Controller where T : class,new()
这是类型参数约束,.NET支持的类型参数约束有以下五种: where T : struct | T必须是一个结构类型 where T : class | T必须是一个类(class)类型,不能是结构( ...
- 【Reporting Services 报表开发】— 表达式
一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...
- Android 网络编程 Socket
1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List< ...
- (转)JS保留两位小数 四舍五入函数
本文转载自:http://www.cnblogs.com/446557021/archive/2011/10/13/2211047.html js 四舍五入函数 toFixed(),里面的参数 就是保 ...
- bzoj3521: [Poi2014]Salad Bar
Description 有一个长度为n的字符串,每一位只会是p或j.你需要取出一个子串S(从左到右或从右到左一个一个取出),使得不管是从左往右还是从右往左取,都保证每时每刻已取出的p的个数不小于j的个 ...
- linux下查看系统进程占用的句柄数
---查看系统默认的最大文件句柄数,系统默认是1024 # ulimit -n 1024 ----查看当前进程打开了多少句柄数 # lsof -n|awk '{print $2}'|sort|uniq ...