首页 > 其他分享 >js的 var let const

js的 var let const

时间:2023-09-26 16:48:55浏览次数:35  
标签:const log let var console 声明 变量

一、简介
二、内容
三、问题

 

一、简介

  js的变量引用,记录下使用的差别。
二、内容

  var  (是variation的简写)是最初js使用的变量声明。

 1    // var 特点
 2     // 声明的变量具有函数作用域,也就是说,变量的作用域限定在声明它的函数内部(函数作用域)或全局范围内(全局作用域)。
 3     // 声明的变量可以被重复声明,而且会发生变量提升(hoisting)现象,即变量可以在声明之前被访问。
 4     // 声明的变量可以被重新赋值。
 5     // 声明的变量可以在 window.变量名 访问到    
 6         
 7     // 声明方法会被提升
 8     test_let_const();
 9     
10     function test_var() { 
11         //因为底下声明了变量所以相当于这里有 var a
12         console.log(a)   // 这里不会报错 会输出undefined 因为下面声明了a, a变量提升了,
13         if (true) {
14             var a = 20; // 同一变量被重新赋值
15             console.log(a); // 输出 20
16         }
17         console.log(a); // 输出 20,因为var具有函数作用域,x在整个函数内部可见
18         var a = 10;
19         
20         var c= 33;
21         console.log(window.c);  // 会输出undefined, 需要全局下声明才能在window访问
22     }
23     var b = 33;
24     console.log(window.b);  // 输出20,windows访问
25     
26     console.log(a); // 不在函数内部,会报错, 程序中断。找不到变量

 

   运行结果:

   const  (是constant的简写)声明常量  let 声明变量     是 ECMAScript 6(ES6)的引入

 1    // const,let 特点
 2     // 声明的变量具有块作用域,大括号里面。
 3     // 声明的变量 不可以 被重复声明,而且 不会 发生变量提升。
 4     // let声明的变量可以被重新赋值, const声明的变量不可被重新赋值,并且必须初始化。
 5     // 声明的变量 不可以 在 window.变量名 访问到    
 6     // 暂时性死区,只要作用域内存在 let、const,它们所声明的变量或常量就自动“绑定”这个区域,不再受到外部作用域的影响。
 7     
 8     // 用于调试方法,让程序执行下去
 9     function try_catch(func){
10         try{
11             func();
12         }catch(e){
13             console.log(e);
14         }
15     }
16     
17     // 声明方法会被提升
18     try_catch(test_let_const_block);
19     console.log("分割线**************************");
20     
21     // 测试 const let 块作用域特点
22     function test_let_const_block(){
23         let a = "方法块的 a";
24         let b = "方法块的 b";
25         if (true) {
26             let a = "判断块的 a";  // 暂时性死区 在内部新声明了个a
27             b = "在内部修改 b";  // 访问到外部块同一变量被重新赋值
28             const c = "判断块的 c"
29             console.log(a); // 输出 "判断块的 a" 作用于内部的a, 不受外部影响
30             console.log(b); // 输出 "在内部修改 b"
31         }
32         console.log(a); // 输出 "方法块的 a"
33         console.log(b); // 输出 "在内部修改 b"  在判断块修改了
34         console.log(c); // 输出 错误,程序中断, 在外部块无法访问内部块的内容
35     }
36     
37     let d = 10;
38     const f = 20;
39     console.log(window.d);  // 输出 undefined let,windows无法访问
40     console.log(window.f);  // 输出 undefined const,windows无法访问

  运行结果:

  有关重复声明:

  有关const 必须初始化

  const 声明不可修改

   const 声明引用内容可修改

 

三、问题

标签:const,log,let,var,console,声明,变量
From: https://www.cnblogs.com/nobody-/p/17730401.html

相关文章

  • let、var、const区别
    1、var:传统的变量声明方式在ES5及之前的JavaScript版本中,我们通常使用var关键字声明变量。var具有以下特点:函数作用域:变量的作用域限制在声明的函数内部,如果在函数外部访问,将会报错。变量提升:变量声明会被提升到作用域的顶部,无论声明语句在哪里,都会被视为在作用域的开始......
  • P9566 [SDCPC2023] K-Difficult Constructive Problem 题解
    @目录DescriptionSolutionSol1Code1Sol2Code2Description有一个长度为\(n\)的01字符串\(s\),其中部分位置已给出,在?的位置处需填入一个1或0。一个填充方案是好的,当且仅当存在\(m\)个不同的\(i\)满足\(1\lei<n\)且\(s_i\nes_{i+1}\)。求所有好的填充方案中字典......
  • 解析es6中let和const并模拟实现私有变量
    使用let和const声明变量早已经习以为常了。笔者作为面试官面试过上百人,能准确理解let/const块级作用域以及的候选人不足一二。本文将深入研究let和const的实现原理,以及多种方式来模拟私有变量,希望本文能给初中级前端小伙伴们一点帮助。一、let和const的实现原理1.1......
  • abc321E - Complete Binary Tree
    E-CompleteBinaryTree首先我们只考虑x子树中的答案,非常明显,一定是一个连续的区间,那么我们只需要找到两个端点即可,左端点一直往左走即可,但是右端点要注意,如果走不了,如果左端点存在,说明n就是我们的右端点。处理完子树之后往上跳即可,因为树高只有60#include<cstdio>#include<......
  • let和var特性去了解闭包问题的特性
    下列代码输出结果为?for(vari=0;i<3;i++){setTimeout(function(){console.log(i);},0);};输出结果是:3,3,3为什么不是0,1,2呢?如果换成for(vari=0;i<3;i++){(function(i){setTimeout(function(){console.log(i);},0,i)})(i)};就可以......
  • TypeError: Assignment to constant variable.
    百度翻译了一下:TypeError:对常量变量的赋值。看了之后发现是定义了一个响应式的数据,在js中没有用.value赋值,直接变量名赋值导致的错误。......
  • 【FATE联邦学习】AnsibleFATE离线部署出现AnsibleUndefinedVariable: ‘ansible_ssh_h
    本人已经提issuehttps://github.com/FederatedAI/FATE/issues/5059.根据群友钟紫英的方法,修改project_path/enviroments/prod/hosts中的[fate]组:render后原文:#前面省略ansible_become_method=sudoansible_become_user=rootansible_become_pass=[deploy_check][fate]1......
  • 【C++】动态内存管理 ⑤ ( 基础数据类型数组 内存分析 | 类对象 内存分析 | malloc 分
    文章目录一、基础数据类型数组内存分析1、malloc分配内存delete释放内存2、new分配内存free释放内存二、类对象内存分析1、malloc分配内存delete释放内存2、new分配内存free释放内存博客总结:C语言中使用malloc分配的内存,使用free进行释放;C++语言中......
  • [abc321E]Complete Binary Tree
    2023-09-23题目题目传送门翻译翻译难度&重要性(1~10):6题目来源AtCoder题目算法模拟解题思路考场没调出来,考完赶紧写发题解祭奠一下。这道题主要就是模拟,细节比较多。思路就是一层一层的计算贡献:如图,我们首先计算出以结点\(x\)为根的子树第\(k\)层的结点数,再计......
  • E - Complete Binary Tree
    E-CompleteBinaryTree完全二叉树三个值N,X,K,分别表示点的个数,点的编号,求到X点的距离为K点的个数。首先,我们对以X为根的子树进行分析,可以知道到X点距离为K的点的个数为2^k。这里需要特判,深度为K时最左边的编号不能大于N,点的个数就等于min(r,n)-l+1。然后再对它的父亲进行......