js(var let const )声明变量要点总结

一:先说下js的概念:

什么是js:
js和HTML和css有相似之处,都是可以在浏览器中解析的.我们通常JavaScript叫做JS。JavaScript是一门运行在浏览器端的脚本语言。
js一般运行在那些环境中:

浏览器
node
手机
嵌入式
ai
区块链

Java和JavaScript:
没有关系 如果非要从商业角度来说,JavaScript是借住Java火起来。
javascript的组成部分:
ECMAScript 欧洲计算机制造联合会 标准 规定常用的语法
BOM Brower Object Model
DOM Document Object Model
先学习ES
JS 的作用:
只要我们打开网站,就肯定有js的身影。

  • 更好的组织我们页面的内容,让内容更加的有条理。
  • 提供用户体验(表单验证[js的初衷],ajax交互数据)
  • 游戏编程
  • 实现页面的动态化,增加页面可观赏性

二:重点总结js变量

变量:

什么是变量:
程序运行中,可以改变的数据。(变量 = 变量名 +变量值)
什么是常量:
程序运行中,不可能改变的数据。
变量存储在什么中:
数据存在内存中,就像内存中有很多小格子(内存空间),这些小格子存储数据,如果需要使用数据,每个小格子(空间)有一个空间地址,根据这个地址,找到小格子,这时候把每一个小格子起一个别名 ,这个别名就是变量名。(就像每个人有身份证号,但是名字是最好记住的吧)

声明变量和定义变量的区别:

  • 声明变量就是:var a;
  • 定义变量:就是给变量名负值。 var a=10;

全局变量 和 局部变量(普通话和方言):

  • 分界点:函数,全局变量在函数体外,局部变量定义在函数体内部。
  • 在ES6之前,js中声明变量使用var ,声明函数用function
  • 全局变量在函数内外都可以访问
  • 局部变量只能在函数内可以访问,函数外不能访问

js常用数据类型:
针对不同的数据,分配不同的内存空间----是为了合理使用内存空间,节约内存资源。
其中分为两类:
在这里插入图片描述
基本数据类型:存储在栈区
nubmer,string,boolean,undefiend,null
引用数据类型:存储在堆区
object(array,function)

JS代码的解析与执行:
名词解析:
解析:就是预编译
提升变量声明 提升函数声明
执行: 按行执行代码,就是js是单线程,从上到下挨个执行任务
详情:https://blog.csdn.net/weixin_44667072/article/details/90516018

1,代码块可以有多个,上面的代码块不能使用下面的代码块中的数据,下面代码块可以使用上面代码块中的数据。
在这里插入图片描述
2,预编译
编译过程:如果代码要执行,先把它转成一个机器能够直接运行的程序(qq.exe,以exe.dll后缀名)。c,C#,Java,.net这些语言需要先编译,再执行。
js不需要这个编译过程。真正的执行过程,分成两步:

  • 1.预编译阶段(预处理)
    做两件事

    • 扫描整个代码段,如果有语法错误,则不会进入运行阶段,而是直接报错。
    • 没有语法错误,接着做一件事:提升------又分为变量提升(var声明的变量)和函数提升。
      提升:把这个变量或者是函数提到代码块的第一句。
      • 变量提升
        提升变量: 1.将var声明的变量,提升代码块的最前面,没有用var声明的不用提升。
        2.循环变量也可以提升。(for var i=1;i<5;i++),i会提升
        3.函数内部加var的变量也会提升,提升到了函数内部的最前面
      • 函数提升:
        function f(){} //函数声明式 【提升】
        var f = function(){}//函数表达式 方式 【不提升】,原因函数表达式本质是一个 变量
  • 2.执行:按代码顺序去执行。

三:var let const的解析:

var:
重复声明:
在这里插入图片描述
遗漏声明:没有加var关键字
在这里插入图片描述

没有块级作用域,提升。
块级作用域就是{ }。
在这里插入图片描述
在新版ES6中,使用 let const 定义变量
let:
与var类似,用来定义变量,避免了var的以上缺陷, 所以现在尽量用let 声明变量。
特点:

  • 块级作用域(第三种作用域)。let所声明的变量,只在let命令所在的代码块内有效。
{
    // let就会把这个a的作用域限定到{} ---->块级作用域
    // 块级作用域  表示出来这个块,就不能访问
    let a = 110;
    console.log(a)
}
// console.log(a)   //a is not defined
  • 在使用var的时代,只有全局作用域和局部作用域,在es6中提出let关键,可以声明一个块级作用域。
  • let没有“变量提升”现象。
console.log(a)
let a=1;  //此时会报错,说明没有变量提升
  • 不会成为window对象的属性
// 全局变量都会挂到window上面
var a = 110;
console.log(a)
console.log(window.a)
// 全局变量都会挂到window上面
let a = 110;
console.log(a)
console.log(window.a)
  • 暂时性死区(TDZ)
  • 不能重复定义
let a =2;
let a=3;
console.log(a);   //会报错

const:
const:声明常量。数值不能改变。
特点:

  • 1,定义完后,不能修改值(基本数据类型,也可能是地址)
  • 2,不能重复声明
  • 3,没有提升
  • 4,声明时必须赋值
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值