跳到主要内容

02-JavaScript常量和变量

JavaScript中常量、变量的概念和C语言一样

常量

  • 固定不能改变的数据
  • 数据类型
    • 整型常量666、0b1001等各种二、十六进制整数
    • 实型常量3.14、6.66等所有小数
    • 布尔常量true、false
    • 字符串常量a、"lnj"等使用单引号(')或双引号(")括起来的一个或几个字符

变量

可以以变化的数据。和C语言一样, 需要先定义后使用

变量定义

  • C语言中定义变量的格式:

    • 变量类型 变量名称 int num;
  • JavaScript中定义变量的格式:

    • var 变量名称 var num;

⚠️注意

  • 和C语言不同的是, C语言再定义变量时需要通过数据型指定变量的类型
  • 而JavaScript在定义变量时不需要通过数据类型指定量的类型
  • 变量的类型会在赋值时自动确定

变量初始化

C语言中初始化变量

  1. 先定义后初始化
int num;
num = 666;
  1. 定义的同时初始化
int num = 666;

JavaScript中初始化变量

  1. 先定义后初始化
var num;
num = 666;
  1. 定义的同时初始化
var num = 666;

变量默认值

  • C语言中变量没有初始化保存的都是垃圾数据
  • JavaScript中变量没有初始化保存的是undefined
var num;
console.log(num); // undefined
// 如果变量没有初始化, 里面存储的是undefined

注释

JavaScript中的注释和C语言一模一样(格式、特点), 也分为单行注释和多行注释

单行注释

// 我是被注释的内容
var num;

// 单行注释的有效范围从第二个 // 一直开始到行尾,被注释的内容不能换行

多行注释

/*我是被注释的内容*/
var num;

/*
多行注释的有效范围是第一颗星到第二颗星结束
多行注释可以被嵌套,但是多行注释不可以被嵌套多行注释
*/

JavaScript中定义变量有两种方式

ES6之前: var 变量名称; ES6开始: let 变量名称;

两种定义变量方式的区别

  • 通过var定义变量, 可以重复定义同名的变量不会报错, 并且后定义的会覆盖先定义的
  • 通过var定义变量, 可以先使用后定义(预解析)
  • 通过var定义变量, 无法定义为局部变量, var必然是全局变量
  • 通过let定义变量, 不可以重复定义同名的变量
  • 通过let定义变量, 不可以先使用再定义, 因为浏览器不会对let定义的变量进行预解析

1.1

var num = 123;
var num = 456;
console.log(num); //不会报错,直接输出 456

1.2

console.log(num);
var num = 123;

//预解析过程如下
var num;
console.log(num); // 输出undefined
num = 123;

1.3

// 先定义后使用 或者是 重复定义也会报错
let num = 123;
let num = 456;
console.log(num); // Identifier 'num' has already been declared

全局变量与局部变量

  • 全局变量就是定义在外面的变量, 我们就称之为全局变量
  • 局部变量就是定义在里面的变量, 我们就称之为局部变量
//通过{}包围的事局部变量,变量只应用在{}里面,超出{}变量则为未定义
{
let num = 666; // 局部变量
console.log(num);
}

//以下定量为未定义
console.log(num);
if(true){
console.log(num);
}

全局变量和局部变量的区别

  • 全局变量, 有效范围是从定义变量的那一行开始直到文件的末尾,即便跨越<style><body>等标签也都可以使用
  • 局部变量, 有效范围是从定义变量的那一行开始直到大括号结束为止(只有在{}才能使用)