JS变量声明var,let.const使用详解

这次给大家带来JS变量声明var,let.const使用详解,JS变量声明var,let.const的注意事项有哪些,下面就是实战案例,一起来看一下。

var声明变量的作用域限制在其声明位置的上下文中

var x = 0; // x是全局变量,并且赋值为0。console.log(typeof z); // undefined,因为z还不存在。function a() { // 当a被调用时, var y = 2;  // y被声明成函数a作用域的变量,然后赋值成2。 console.log(x, y);  // 0 2  function b() {    // 当b被调用时,  x = 3; // 全局变量x被赋值为3,不生成全局变量。  y = 4; // 已存在的外部函数的y变量被赋值为4,不生成新的全局变量。  z = 5; // 创建新的全局变量z,并且给z赋值为5。  }     // (在严格模式下(strict mode)抛出ReferenceError) b();   // 调用b时创建了全局变量z。 console.log(x, y, z); // 3 4 5}a();          // 调用a时同时调用了b。console.log(x, z);   // 3 5console.log(typeof y); // undefined,因为y是a函数的本地(local)变量。

登录后复制

let 声明的变量只在其声明的块或子块中可用,var的作用域是整个封闭函数

function varTest() { var x = 1; if (true) {  var x = 2; // 同样的变量!  console.log(x); // 2 } console.log(x); // 2}function letTest() { let x = 1; if (true) {  let x = 2; // 不同的变量  console.log(x); // 2 } console.log(x); // 1}

登录后复制

在 ECMAScript 2015 中,let绑定不受变量提升的约束,这意味着let声明不会被提升到当前执行上下文的顶部。
在块中的变量初始化之前,引用它将会导致 ReferenceError(而使用 var 声明变量则恰恰相反,该变量的值是 undefined )
当在块中使用时,let将变量的作用域限制为该块。注意var的作用域在它被声明的函数内的区

var a = 1;var b = 2;if (a === 1) { var a = 11; // the scope is global let b = 22; // the scope is inside the if-block console.log(a); // 11 console.log(b); // 22} console.log(a); // 11console.log(b); // 2

登录后复制

const 常量必须在声明的同时指定它的值.

const声明创建一个值的只读引用。但这并不意味着它所持有的值是不可变的(如引用内容是对象),只是变量标识符不能重新分配一个常量不能和它所在作用域内的其他变量或函数拥有相同的名称

// 注意: 常量在声明的时候可以使用大小写,但通常情况下全部用大写字母。 // 定义常量MY_FAV并赋值7const MY_FAV = 7;// 报错MY_FAV = 20;// 输出 7console.log("my favorite number is: " + MY_FAV);// 尝试重新声明会报错 const MY_FAV = 20;// MY_FAV 保留给上面的常量,这个操作会失败var MY_FAV = 20; // 也会报错let MY_FAV = 20;// 注意块范围的性质很重要if (MY_FAV === 7) {   // 没问题,并且创建了一个块作用域变量 MY_FAV  // (works equally well with let to declare a block scoped non const variable)  let MY_FAV = 20;  // MY_FAV 现在为 20  console.log('my favorite number is ' + MY_FAV);  // 这被提升到全局上下文并引发错误  var MY_FAV = 20;}// MY_FAV 依旧为7console.log("my favorite number is " + MY_FAV);// 常量要求一个初始值const FOO; // SyntaxError: missing = in const declaration// 常量可以定义成对象const MY_OBJECT = {"key": "value"};// 重写对象和上面一样会失败MY_OBJECT = {"OTHER_KEY": "value"};// 对象属性并不在保护的范围内,下面这个声明会成功执行MY_OBJECT.key = "otherValue";// 也可以用来定义数组const MY_ARRAY = [];// It's possible to push items into the array// 可以向数组填充数据MY_ARRAY.push('A'); // ["A"]// 但是,将一个新数组赋给变量会引发错误MY_ARRAY = ['B']

登录后复制

下面介绍下在javascript中有三种声明变量的方式:var、let、const。

var 声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用。

for(var i=0;i<=1000;i++){ var sum=0; sum+=i; } alert(sum);

登录后复制

声明在for循环内部的sum,跳出for循环一样可以使用,不会报错正常弹出结果

let:声明块级变量,即局部变量。

在上面的例子中,跳出for循环,再使用sum变量就会报错,有着严格的作用域,变量只作用域当前隶属的代码块,不可重复定义同一个变量,不可在声明之前调用,必须先定义再使用,会报错,循环体中可以用let

注意:必须声明’use strict’;后才能使用let声明变量否则浏览并不能显示结果,

const:用于声明常量,也具有块级作用域 ,也可声明块级。

const PI=3.14;

登录后复制

它和let一样,也不能重复定义同一个变量,const一旦定义,无法修改。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS中怎样取得DOM 元素位置

Vue在前端开发中需要注意什么

以上就是JS变量声明var,let.const使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2767195.html

(0)
上一篇 2025年3月8日 11:32:31
下一篇 2025年3月8日 11:32:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.js应用设置沙箱环境使用方法

    这次给大家带来Node.js应用设置沙箱环境使用方法,Node.js应用设置沙箱环境使用的注意事项有哪些,下面就是实战案例,一起来看一下。 有哪些动态执行脚本的场景? 在一些应用中,我们希望给用户提供插入自定义逻辑的能力,比如 Micros…

    2025年3月8日
    200
  • js与typescript中class使用详解

    这次给大家带来js与typescript中class使用详解,js与typescript中class使用的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 对于一个前端开发者来说,很少用到 class ,因为在 注意事项 中更多的是 …

    编程技术 2025年3月8日
    200
  • JS进行前后端同构步骤详解

    这次给大家带来JS进行前后端同构步骤详解,JS进行前后端同构的注意事项有哪些,下面就是实战案例,一起来看一下。 什么是前后端同构 明确三个概念:「后端渲染」指传统的 ASP、Java 或 PHP 的渲染机制;「前端渲染」指使用 JS 来渲染…

    编程技术 2025年3月8日
    200
  • nodejs读取去重excel步骤详解

    这次给大家带来nodejs读取去重excel步骤详解,nodejs读取去重excel的注意事项有哪些,下面就是实战案例,一起来看一下。 如何使用,直接上代码 /** * 安装node-xlsx插件 */var path = require(…

    编程技术 2025年3月8日
    200
  • Vue.js中router如何传递参数

    这次给大家带来Vue.js中router如何传递参数,Vue.js中router传递参数的注意事项有哪些,下面就是实战案例,一起来看一下。 Vue-router参数传递 为什么要在router中传递参数 设想一个场景,当前在主页中,你需要点…

    2025年3月8日
    200
  • 源生js实现哈夫曼编码步骤详解

    这次给大家带来源生js实现哈夫曼编码步骤详解,源生js实现哈夫曼编码的注意事项有哪些,下面就是实战案例,一起来看一下。 原始版 function cal(str) { if (typeof str !== ‘string’ || str.l…

    编程技术 2025年3月8日
    200
  • Angularjs中自定义指令使用技巧总结

    这次给大家带来Angularjs中自定义指令使用技巧总结,Angularjs中自定义指令使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一:自定义指令常用模板 下面是大致的说明,不是全面的,后面来具体说明一些没有提及的细节和重要的相…

    编程技术 2025年3月8日
    200
  • jQuery插件highslide.js控制图片案例详解

    这次给大家带来jQuery插件highslide.js控制图片案例详解,jQuery插件highslide.js控制图片的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 今天用用了一款图片展示插件highslide.js,感觉用起来…

    2025年3月8日 编程技术
    200
  • nodeJS模块使用步骤详解

    这次给大家带来nodeJS模块使用步骤详解,nodeJS模块使用详解的注意事项有哪些,下面就是实战案例,一起来看一下。 1.定义Student模块,Teacher模块 function add(student){ console.log(‘…

    2025年3月8日
    200
  • JS做出随机数方法总结

    这次给大家带来JS做出随机数方法总结,JS做出随机数方法的注意事项有哪些,下面就是实战案例,一起来看一下。 var chars = [‘0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’A’,’B’,’C’,’…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论