var xx;

function test(){

var aa;                     //声明一
let bb;                     //声明二
this.cc;                   //声明三

 //声明一局部代码块
{
let dd;                   //声明四 

}
那么,这三种方式有什么区别呢?

区别在于作用域不同。

let 
let 声明的变量作用域为某个代码块。而代码块的长度可大可小。 
也就是说,当按声明二的方式声明一个变量时,该变量的作用范围于为整个function语句。 
当按声明四方式声明一个变量时,该变量的作用范围为局部的代码块。

var 
如果在函数内部,加var就是局部变量,不加是全局变量。 
在函数外面,也就是说在window区域加不加var是一样的,该var变量的作用域为整个js文件周期(全局作用域)。

this 
this多用于函数内部,它永远指向调用他的那个对象 
简单地说,用this声明的变量作用域也是全局的。 
如果实例化test函数 var p=new test() 那么用p能访问test函数内的哪些变量呢? 
答案是只有cc 。实际上this声明的变量是作用于上下文的。

--------------------- 
作者:weixin_42617917 
来源:CSDN 
原文:https://blog.csdn.net/weixin_42617917/article/details/82709143 
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/passerma/p/10588695.html

var let this的区别相关推荐

  1. var和dynamic的区别及如何正确使用dynamic?

    1.var与dynamic的区别   C#中的很多关键词用法比较容易混淆,var和dynamic就是其中一组,但其实它们是有本质的区别的.var 在编译阶段已经确定类型,在初始化时候,必须提供初始化的 ...

  2. css里面的let,js中let和var定义变量的区别

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

  3. 前端开发:JS中let、var和const的区别详解

    前言 前端开发过程中,JS声明变量的关键字想必开发者都不陌生,而且使用的频率在前端开发过程中也是数一数二的.JS中声明变量的关键字有三个let.var和const,但是三者的使用对比和区别也是非常重要 ...

  4. Var let const 的区别

    Var let const 的区别 变量提升 var 存在变量提升 变量可以在声明之前调用 但是值为undefined. let ,const 不存在变量提升.他们声明的变量必须在声明后调用 如果在之 ...

  5. var 和 let的区别_let 和 var的区别

    js定义变量前言 1.js 定义变量 使用 var 或者let 2.js定义常量 使用 const 3.var 定义变量是用js语言诞生就有的: let定义变量是从ES6新语法开始的. 4.let定义 ...

  6. JS中var和let的区别

    var和let的区别: 区别: 1.使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象: 2.使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升: 3.let不允 ...

  7. var与let的区别【一看就懂的知识】

    今天偶尔翻看了一本书<JavaScript编程精解>,在函数这一章节中难免会看到"作用域"这个字眼,之前对于作用域的概念本就不是很敏感,也就匆匆略过了,反过来看时,才明 ...

  8. js中定义变量之②var let const的区别

    var 上一篇文章有讲过,是js定义变量的关键词. 但是在es6中,新添加了两个关键词,用于变量声明的关键词:let 和const 接下来就说一下var let 和const的区别: 首先说var 用 ...

  9. ES6——let、const和var的用法和区别

    ES6 新增了let命令,用来声明变量,新增了const命令,用来声明常量,它们的用法类似于var. let a = 1; var b = 2; const PI = 3.14; 主要区别 块级作用域 ...

最新文章

  1. unity在中文环境下的支持不好
  2. [转]获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)
  3. R中rep函数的使用
  4. java分治_【Java算法】什么是分治算法?
  5. influxdb删除某一列(tag或者field)
  6. AI产品开发的核心原则:以研究为核心驱动
  7. 算法之数学--常用数学公式,规律神器OEIS 2021-03-09
  8. 绿色版电子书PDF转换Word转换器
  9. 第九届蓝桥杯题解(部分)
  10. 数学符号的读音——那些你总是记不住的数学符号的读音(α,β,γ,δ,ε,λ,ζ,η,θ,ξ,σ,φ,ψ,ω...)
  11. Flutter 3更新详解
  12. 用可视化解构BERT,我们从上亿参数中提取出了6种直观模式
  13. 像素级图像融合常用方法
  14. (原創) 如何使用ModelSim-Altera對Nios II仿真? (SOC) (Nios II) (SOPC Builder) (ModelSim) (DE2)...
  15. Appium+Pytest+Allure集成PO项目管理模式实现自动化测试
  16. 为2020年的第一场雪锦上添花:用 matplotlib 绘制雪花和雪景
  17. OpenDNS(转)
  18. python黄金走势预测_python实时获取和讯网纸黄金价格信息
  19. 无人值守安装RHEL6
  20. CVPR 2023 | 一键去除视频闪烁,该研究提出了一个通用框架

热门文章

  1. php4 apache 配置,[开发环境配置]windows下php4+mysql4+apache2开发环境配置
  2. 五行塔怎么吃第五个_中医美容——“五行美容养颜法”,善用五行,女人会越来越漂亮...
  3. 乒乓球十一分制比赛规则_乒乓球的基本比赛规则
  4. python tkinter布局混用_python tkinter布局界面如何实现?
  5. python数据展示库_收藏!盘点很实用的数据科学Python库
  6. 本地更新github项目_GitHub开源项目2019-03-29更新精选
  7. Git初学札记(一)————Git简介与安装
  8. 通俗易懂的SpringBoot教程---day2---Springboot配置文件
  9. 蓝桥杯大赛基础之--数列排序
  10. 笔记本超频会烧吗_笔记本电脑cpu超频是什么意思?超频会怎样啊?