zoukankan      html  css  js  c++  java
  • es6-块级作用域let 和 var的区别

    块级绑定

    js的处理机制和我们大家想象的完全不同,并不完全是所谓函数调用以及上下执行那样简单,它是存有”域”的本质区别的。

    var具有全局污染特性,所以es6才会出现let 、const。

    下面通过一些实例来给大家解释一下:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 
     4 <head>
     5     <meta charset="UTF-8">
     6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     8     <title>Document</title>
     9 </head>
    10 
    11 <body>
    12 
    13     <!--
    14 undefined和null的区别?
    15 
    16 undefiend是定义了未赋值,而null是未定义
    17 -->
    18 </body>
    19 <script>
    20     // 我们所认识的
    21     function getValue(any) {
    22 
    23         if (any) {
    24             var val = 'blue';
    25             // 其他代码
    26             return val;
    27         } else {
    28 
    29             console.log(val)
    30                 // value值可以在此访问,值为undefined
    31             return null;
    32         }
    33         // value值在此处也可以访问,值为undefined
    34     }
    35 
    36     getValue();
    37 
    38     // Js引擎所认识的
    39     function getValues(anys) {
    40 
    41         var val;
    42 
    43         if (anys) {
    44             val = 'blue';
    45             // 其它代码
    46             return value;
    47         } else {
    48             return null;
    49         }
    50     }
    51 
    52     // 我们以为的var的作用域只限于那一块作用域内,实际上它已经跨越了“{}”界限。
    53     // val变量的声明被提升到了函数顶部,初始化工作区域还保留在原区域。
    54     // val变量也是可访问的,此处它的值会是undefined,因为它没有被初始化。
    55 </script>
    56 
    57 </html>

  • 相关阅读:
    VMware的三种网络连接方式区别
    迁移至博客园
    Oracle常用语句集合
    Oracle表的几种连接方式
    Oracle逻辑结构(TableSpace→Segment→Extent→Block)
    从线性代数的角度理解线性时不变系统和信号响应
    从线性代数的角度理解傅里叶变换
    在WPF中调用文件夹浏览/选择对话框
    在WPF中调用打开文件对话框
    在WPF中调用另存为对话框
  • 原文地址:https://www.cnblogs.com/cisum/p/7744099.html
Copyright © 2011-2022 走看看