我们知道: var可以定义一个局部变量,当然如果var定义在最外层的话,就是全局的局部变量,也就算是全局变量了。 而this关键字定义的变量准确的说应该算是成员变量。即定义的是调用对象的成员变量。 另外在“类(构造函数)”中,我们通常也会用var定义私有属性,而this定义公共属性。 以上这些是大家都知道的,若不知道看了就大概知道的。但我今天遇到了一个疑惑,恳请社区高手指点。是这样的:

//打开浏览器控制台执行一下命令 //定义了一个全局变量 var wahaha = “娃哈哈”;//这里双引号改成英文双引号  //输出“娃哈哈” console.log(wahaha);  //输出“娃哈哈”,我们知道这里的this指向的是window,即之前的var定义已经把wahaha变量定义成了window的成员变量 console.log(this.wahaha);

上面代码两条控制台日志语句都输出了“娃哈哈”的结果,然而如果这样

//定义一个类 function ClassA(){ //定义一个私有属性 var wahaha = “娃哈哈”;//这里双引号改成英文双引号 //输出“娃哈哈”;   console.log(wahaha); //输出undefined   console.log(this.wahaha); }  var a = new ClassA();

链接

var与this定义变量的区别以及疑惑的更多相关文章

  1. JavaScript中var和this定义变量的区别

    JavaScript中var和this定义变量的区别 在js中声明变量时可以使用var和this,但使用this的有很大一部分参考书是没有的,经过查阅相关资料总结如下: 用var和this声明变量,存 ...

  2. es6的let与es5的var定义变量的区别

    es6的let与es5的var定义变量的区别 自身新手第一次接触let关键字的时候,不知道let与var的区别,本能认为是一样,但非如此,比如下述的代码运行就会报错: let hello = 'hel ...

  3. ts和js中let和var定义变量的区别

    javascript 严格模式 第一次接触let关键字,有一个要非常非常要注意的概念就是”JavaScript 严格模式”,比如下述的代码运行就会报错: let hello = 'hello worl ...

  4. mysql -- 存储过程中 declare 和 set 定义变量的区别

    mysql存储过程中,定义变量有两种方式:1.使用set或select直接赋值,变量名以 @ 开头.例如:set @var=1;可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量. 2.以 ...

  5. MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  6. 【转载】浅谈JavaScript,let和var定义变量的区别

    了解JS与ES5与ES6区别 JS语言 JavaScript一种动态类型.弱类型.基于原型的客户端脚本语言,用来给HTML网页增加动态功能. 动态: 在运行时确定数据类型.变量使用之前不需要类型声明, ...

  7. let 和 var定义变量的区别-盼盼Degenerate

    let和var关键字的区别 声明后未赋值,表现相同 (function() { var varTest; let letTest; console.log(varTest); //输出undefine ...

  8. let 和 var 定义变量的区别

    一.变量提升 var 存在变量提升,而 let 不存在变量提升,所以用 let 定义的变量一定要在声明后再使用,否则会报错. var //var定义的变量存在变量提升,变量会把声明提升到整个作用域的最 ...

  9. js中let和var定义变量的区别

    let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781671 声明后未赋值,表现相同 (fun ...

随机推荐

  1. iOS7下status bar相关问题的解决方法

    转载自:http://blog.csdn.net/volcan1987/article/details/14227313 iOS7里status bar的实现跟iOS6下有写不一样,前段时间碰到了这个 ...

  2. PAT 甲级 1003Emergency(Dijkstra最短路)

    1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...

  3. pt-online-schema-change 和 oak-online-alter-table功能对比

    今天再查看文档的时候突然看到了oak-online-alter-table执行在线ddl,以前只使用过pt-online-schema.所以这里收集一些资料对比下差异,方便日后自己查阅. 一.oak- ...

  4. FW: git internal

    Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式.我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的, ...

  5. Windows服务的调试

    1.服务为其他程序调用的情况:首先停止服务,在项目中设置断点,重新启动服务,点击项目中工具,附加到进程,运行调用服务的程序,即可进入之前设置的断点,进而进行调试. 2.服务内方法为自动执行的情况:首先 ...

  6. tpot从elastic search拉攻击数据之三 用于拉取的java程序

    package download; import org.json.JSONArray; import java.io.*; import java.net.URL; import java.net. ...

  7. ssh登陆github

    ssh [转载] 如果只是在一个仓库里管理文件历史,Git和SVN真没啥区别.为了保证你现在所学的Git物超所值,将来绝对不会后悔,同时为了打击已经不幸学了SVN的童鞋,本章开始介绍Git的杀手级功能 ...

  8. 5.MongoDB CRUD Operations-官方文档摘录

    总结 1. CRUD:create, read, update, and delete DOCUMENT 2.在3.2版本的插入方式 db.collection.insertOne() db.coll ...

  9. Vue(6)- Vue-router进阶、单页面应用(SPA)带来的问题

    一.Vue-router进阶 回顾学过的vue-router,并参考官方文档学习嵌套路由等路由相关知识. 二.单页面应用(SPA)带来的问题 1.虽然单页面应用有优点,但是,如果后端不做服务器渲染(h ...

  10. 《COM本质论》COM是一个更好的C++心得分享

    昨天看了<COM本质论>的第一章"COM是一个更好的C++",认为非常有必要做一些笔记,于是整理成这篇文章.我相信你值得拥有. 这篇文章主要讲的内容是:一个实现了高速查 ...