js组成+var、let、const区别

js组成

ECMAScript (js标准,ECMA-262)
DOM(文档对象模型,是W3C国际组织的一套Web标准 ,它定义了访问HTML文档对象的一套属性、方法和事件。)
BOM(浏览器对象模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构,包含打开窗口,关闭窗口等,顶层对象是window)

js

js是弱类型脚本语言
顺序解析
边解析边执行

定义变量用var

最长255字符、禁止使用关键字保留字等、中间不能有空格

全局变量局部变量区别

全局变量:用var在函数外声明的变量 、不使用var在函数内声明的变量(不建议使用)
局部变量:在函数内使用var声明

var let const 区别

var声明的全局变量是挂在window上的
let、const在最外层声明,也不会挂在window上

var声明变量,可以有变量提升,const、let会报错,声明前不能使用

let、const是有块级作用域的,变量不会泄露

for(var i=0;i<5;i++){
}
console.log(i) //5
for(let i=0;i<5;i++){
}
console.log(i) //i is not defined

setTimeout异步后执行,执行setTimeout时,for已经走完

    for(var i=0;i<5;i++){
      setTimeout(function(){
        console.log(i)
      },1000)
    }
    console.log('hou')
    // hou 5个5 

//想要一秒后打印
方法一:封闭空间传参

   for(var i=0;i<5;i++){
      (function(item){
        setTimeout(function(){
          console.log(item)
        },1000)
      })(i)
    }

方法二:let 块级作用域 定义函数时候保存了i的值 (let后 封闭空间立即执行传参保存变量的方式成为 不必须)

    for(let i=0;i<5;i++){
      setTimeout(function(){
        console.log(i)
      },1000)
    }

//每个3秒打印不同i

for(var i=0;i<5;i++){
  (
    function(item){
      setTimeout(function(){
        console.log(item)
      },3000*i)
    }
  )(i)  
}

或者

for(let i=0;i<5;i++){
  setTimeout(function(){
    console.log(i)
  },3000*i)
}

let 块级作用域

同一个作用域下,可以用var 重复声明同一个变量,值会覆盖
let、const会报错

const 特殊性
1、一旦声明必须赋值,不能使用null占位后进行改写,会报错。
2、如果声明的是复合类型数据,可以修改其属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

相关阅读更多精彩内容

友情链接更多精彩内容