广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >JS变量中有var定义和无var定义的区别
  • 865
分享到

JS变量中有var定义和无var定义的区别

2024-04-02 19:04:59 865人浏览 安东尼
摘要

这篇文章主要讲解了“js变量中有var定义和无var定义的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS变量中有var定义和无var定义的区别”吧!

这篇文章主要讲解了“js变量中有var定义和无var定义的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS变量中有var定义和无var定义的区别”吧!

 之前我们在写js代码的时候都知道可以用var定义全局变量和局部变量,也可以省略var,而且在非严格模式下不会报错,但是并不知道两者的区别...

var x = 1;
y = 4;
console.log(x);//1
console.log(y);//4
console.log(window.x);//1
console.log(window.y);//4

简单测试下可以知道定义的x和y都被挂载在window对象上,变为window下的属性,这并不能说明什么...

delete x;
delete y;
console.log(window.x);//1
console.log(window.y);//undefined

再看看执行上面代码之后x属性没有被删除,y被删除了,这是区别就来了

在通过var进行定义后的变量不能被delete删除,这是什么原因?ECMAScript 5标准中,可以通过Object.getOwnPropertyDescriptor()来获取对象自身某个property的属性信息:

console.log(Object.getOwnPropertyDescriptor(window,"x"));
console.log(Object.getOwnPropertyDescriptor(window,"y"));

得到如下信息:

JS变量中有var定义和无var定义的区别

当不使用var进行定义是,变量默认的configurable为true,可以进行delete等命令进行操作,而当var在定义一个全局变量的时候configurable 变为了false,即不会被delete删除.

此外,简单说一下关于变量提升问题

alert(a);//Uncaught ReferenceError: a is not defined
a = 100;alert(b);//undefined

var b = 200;先说第二段代码,var声明的全局变量b在js中会进行代码提升,也就是说var b = 200;会被分解为var b;b=200;代码解析的第时候会将var b;提升到最前面,并且在内存中开辟一个空间,由于b没有被赋值,默认为undefined.第一段代码中当js执行alert()函数时候由于没有进行var声明,变量没有被提升,不存在内存开辟,所以在alert时候直接报错!

在ECMAScript6标准中,一个重要的概念就是"javascript严格模式",需要在最前面加上"use strict";

let注意点:

1.let拥有块级作用域,一个{}就是一个作用域

2.let在其作用域下面不存在变量提升

3.let在其作用域中不能被重复声明(函数作用域和块级作用域)

第一点:let的块级作用域

注意:以下代码都在严格模式下执行的

let n = 10;
if(true){
 let n = 50;
}
console.log(n);//10表示外层代码块不受内层代码块的影响,如果是用var定义的变量n,那么输出的就是修改后的50.

第二点:变量提升问题

alert(a);//Uncaught ReferenceError: a is not defined
let a = 100;

不同var,let不存在变量提升,以上写法会直接报错.

第三点:重复声明问题

(function(){
 let lTest = "let";
 var vTest = "var"
 let lTest = "let changed";//Uncaught SyntaxError: Identifier 'lTest' has already been declared
 var vTest = "var changed";
 console.log(lTest);
 console.log(vTest);
})();

let在同一个作用域下不允许进行重复变量声明.否则也是直接报错!!!

const命令

const用来声明常量,一旦声明,其值就不可以更改,如果你非得修改变量的值,js不会报错,只是默默表示失败(不起作用)

const的作用域与let相同,只在声明所在的块级作用域内有效,并且也是和let一样不可以重复进行声明.

感谢各位的阅读,以上就是“JS变量中有var定义和无var定义的区别”的内容了,经过本文的学习后,相信大家对JS变量中有var定义和无var定义的区别这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JS变量中有var定义和无var定义的区别

本文链接: https://www.lsjlt.com/news/78575.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS变量中有var定义和无var定义的区别
    这篇文章主要讲解了“JS变量中有var定义和无var定义的区别”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS变量中有var定义和无var定义的区别”吧!...
    99+
    2022-10-19
  • js通过var定义全局变量与在window对象上直接定义属性的区别说明
    目录js var定义全局变量与在window对象上直接定义属性区别关于window区别一区别二区别三js中定义的全局变量,局部变量关于变量和参数问题js var定义全局变量与在win...
    99+
    2022-11-13
  • JavaScript变量中var,let和const的区别
    目录前言ES5与ES6的区别1. 作用域2. 全局属性3. 变量提升与暂时性死区4. 重复声明let与const的区别1. 常量最佳实践前言 JavaScript中一共有3种用来声明...
    99+
    2022-11-13
  • JS中let和var的区别有哪些
    这篇文章将为大家详细讲解有关JS中let和var的区别有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.作用域的不同:{  let a = 10;&...
    99+
    2023-06-14
  • 变量定义与声明的区别详细解析
    我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下: 变量的声明有两...
    99+
    2022-11-15
    变量
  • Go语言中的常量和变量的定义
    这篇文章主要介绍“Go语言中的常量和变量的定义”,在日常操作中,相信很多人在Go语言中的常量和变量的定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言中的常量和变量的...
    99+
    2022-10-18
  • Golang函数的变量定义时的赋值方法与区别
    Golang是一种快速、高效、现代化的编程语言,它在编译时会自动检查类型,并且具有并发性和内存安全性等特点,因此被越来越多的开发者所青睐。在Golang中,我们经常需要使用函数来封装业务逻辑,而函数中的变量定义时的赋值方法是一个常见的问题,...
    99+
    2023-05-17
    变量定义 Golang函数 赋值方法与区别
  • 编程中声明和定义有什么区别
    这篇文章主要为大家展示了“编程中声明和定义有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“编程中声明和定义有什么区别”这篇文章吧。一般解释来说:声明是告诉编译器存在这么一个标识符。定义则...
    99+
    2023-06-17
  • Java中成员变量的定义规则有哪些
    在Java中,成员变量的定义规则包括以下几点:1. 成员变量必须先声明,后使用。在类的成员位置上声明,但不在任何方法、构造方法或代码...
    99+
    2023-08-31
    Java
  • c/c++中变量的声明和定义深入解析
    不管是函数还是变量的声明 ,都是为了告诉编译器我要使用这个变量或者函数了,用于类型检查。在定义 的时候编译器是不会分配任何内存的, 比如下面的函数:复制代码 代码如下:void fu...
    99+
    2022-11-15
    变量 c++ c
  • php中预定义数组$_post和$_get的区别是什么
    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑PHP 预定义变量($_GET 和$_POST)$_GET$_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值。$_GET 变量用于收集来自 ...
    99+
    2014-11-27
    php $_post $_get
  • win7安装中升级安装和自定义安装有什么区别
    U盘的小巧和便捷深受用户们的喜爱,相信众多用户都喜欢用它作为存储数据和传输文件的小工具,对于一些比较追求个性化的朋友们会觉得每次U盘的图标都是一个样显得很单调,就想要更改一下U盘 安装Windows7时升级安装和自定义...
    99+
    2023-06-05
    win7 自定义 区别
  • 如何解决css文件中的样式类被覆盖和js文件中的变量未定义问题
    这篇文章给大家介绍如何解决css文件中的样式类被覆盖和js文件中的变量未定义问题,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题原因:为什么呢?因为在调用组件W的css样式时,我们自...
    99+
    2022-10-19
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作