zl程序教程

您现在的位置是:首页 >  Javascript

当前栏目

js let var const你会用吗?

2023-02-25 18:16:17 时间

变量声明基础

在我们学习变量声明的三个关键字前,我们想了解一些基础知识。

开辟内存地址

如下我们声明了一个名为test的变量,其变量内容是 '第一个'。其实质是以二进制,如"010101"开辟了一个内存地址。当我们想使用这个变量的内容的时候,通过调用变量名test来实现。

var test = '第一个'
console.log(test)    // '第一个'

思考?变量名可以是$符号吗?

当然可以,JQuery就是用的$符号,我们回顾一下变量的命名:可以是数字、字母、下划线和$符号。但不能以数字开头。

var $ = 123;
console.log($)   //123

赋值

先声明,后赋值

var stage;
stage = '12'

同时声明多个

var a = 'aa',b='bb',c='cc';
console.table(a,b,c)

一个值赋值给多个变量

var d = e = f ='same'
console.log(d,e,f)

js不是强类型

不像Java一样,只需要用关键字 var/let/const 声明变量。

var web = 'hdfs';
console.log(typeof web);
var num = 12;
console.log(typeof num);
var ob = {'name':'yy'}
console.log(typeof ob)

变量提升

保留字

class作为js的保留字,是不可以作为变量名使用的,并且会报错。

如下,我们在声明class变量之前,声明一个变量web,并且打印出来。

var web = 'http';
console.log(web)
var class = 'dass';

但是它并不会打印,因为class的报错。

这是因为,代码编译之前解析器会将代码从上到下分析一遍,在分析的过程就进行了变量提升

未声明前就使用变量

问题来了,在我们没声明变量前,就使用了这个变量。会报错吗?

答案是,不会,可以正常的使用。同样是因为变量提升。

console.log(first)
var first = 'first';

定义一个变量有声明和赋值两步骤

此时执行,它相当于把 var first = 'first'; 拆分成var first;first = 'first'。 并且把 var first;放到了console.log()之前。

var first;
console.log(first)
first = 'first';

未执行代码变量提升

如下代码中,因为执行 var web = 'this is a';的条件是 false,所以一直都不会进入这个判断中。

function change(){
    if(false){
      var web = 'this is a';
    }
    console.log(web)
 }
change()

会打印出undefined

那么,当我们把 var web = 'this is a';注释之后。就会发现如下报错。