【JavaScript入门笔记02 基本知识Ⅱ】

笔记参考javascript.info中文站

变量

1. 引言

在购物网站会有购车中的商品,聊天软件中会有聊天消息,变量就是来存储这些内容的。

2. 声明

变量的声明需要用到 let 关键字,有时候也会使用古早的 var ,两者没什么区别,只是 var 更旧一些,暂时不提

举个例子

let message;

这样我们就建立了一个新的变量,变量名为 message,我们向其中添加一些内容

let message;
message = 'Hello'; // 将字符串 'Hello' 保存在名为 message 的变量中

不妨写的简练一些

let message = 'Hello'; // 定义变量,并且赋值

也可以在一行中声明多个变量:

let user = 'John', age = 25, message = 'Hello';

但下面这样写更加美观,易读

let user = 'John';
let age = 25;
let message = 'Hello';

如何改变变量的值?

let message;
message = 'Hello!';
message = 'World!'; // 值改变了

我们还可以对变量进行拷贝

let hello = 'Hello world!';
let message;

// 将字符串 'Hello world' 从变量 hello 拷贝到 message
message = hello;
// 此时message变量的内容与hello变量相同

重复声明会报错

let message = "This";

// 重复 'let' 会导致 error
let message = "That"; // SyntaxError: 'message' has already been declared

注意重复声明和更改变量内容的区别

3. 命名

命名语法规则:

  • 只能包含字母、数字、符号 $ 和 符号_,且首字符不能是数字
  • 变量名区分大小写
  • 语法上允许非英文字母,但不推荐
  • 例如 let 、return 这些保留字,不作为变量名

一个变量名应该有一个清晰、明显的含义,对其存储的数据进行描述,声明变量之前,多花点时间思考它的更好的命名。你会受益良多。

因此,我们推荐你这样命名:

  • 使用易读的命名,比如 userName 或者 shoppingCart
  • 离诸如 a、b、c 这种缩写和短名称远一点
  • 保证简洁的同时足够准确,不好的例子就是 datavalue,除非他们在当前代码中已经足够
  • 脑海中的术语要和团队保持一致。如果网站的访客称为 user,那你就不要称他们为 visitornewManInTown

举个例子
Q:创建一个变量来存储当前浏览者的名字。你会怎么命名这个变量?
A:let currentUserName = "John";

感觉这个变量有些长?想换成 userName算了吧,现代编辑器的自动补全可以让长变量名变得容易编写。不要浪费这个特性。一个名字中包含三个词挺好的。

4. 常量

声明一个常数(不变)变量,可以使用 const 而非 let,注意常量不能修改内容

const myBirthday = '18.04.1982';
myBirthday = '01.01.2001'; // 错误,不能对常量重新赋值

一个普遍的做法是将常量用作别名,以便记住那些在执行之前就已知的难以记住的值,例如用常量记录颜色,代替记不住的那些16进制数

const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";

// ……当我们需要选择一个颜色
let color = COLOR_ORANGE;
alert(color); // COLOR_ORANGE 比 #FF7F00好记多了

请注意,这个例子中颜色使用的都是大写,这就是“硬编码(hard-coded)”常量,他们和普通常量的区别是:他们在使用之前就已经可以确定值是多少,例如生日,颜色16进制编码

下面这个pageLoadTime 则是普通常数,因为页面加载时间在加载前不确定是多少

const pageLoadTime = /* 网页加载所需的时间 */;
5. 提示

有时我们可能觉得重用一些变量更方便,或者认为太多变量很杂乱,但事实上,重用的变量就像是被扔进不同东西盒子,但没有改变它的贴纸。现在里面是什么?谁知道呢。我们需要靠近一点,仔细检查才能知道。

我们或许节省了一点变量声明的时间,但却在调试代码的时候损失数十倍时间。

因此,请记住,额外声明一个变量绝对是利大于弊的。



数据类型

1. Number 类型
  • number 类型代表整数和浮点数
  • number 类型可以进行加减乘除运算
  • number 类型除了一般数字,还有Infinity-InfinityNaN,三个概念
alert( 1 / 0 ); // Infinity 指正无穷
alert( Infinity  ); // 也可以这样直接调用
alert( - 1 / 0 ); // -Infinity 指负无穷
alert( "not a number" / 2 ); // NaN 代表一个计算错误

不难发现,Javascript 中的数学运算是安全的,我们可以进行任意运算而不用担心致命错误,最坏情况也就是一个“NaN”

2. BigInt 类型

Number类型的取值范围是 - (253 - 1) ~ (253 - 1),超出范围则无法表示,此时需要用BigInt类型,举个例子

// 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 1234567890123456789012345678901234567890n;

虽然该类型是最近才加入 Javascript 的,但兼容性方面, Firefox/Chrome/Edge/Safari 已经支持 BigInt 了
当然, IE 还没有。

3. String 类型
  • 字符串必须被括在引号里
  • 引号分三种:双引号,单引号,反引号
  • 单引号双引号在 Javascript 中几乎没区别
  • 反引号允许我们通过将变量和表达式包装在 ${…} 中,来将它们嵌入到字符串中,在下面的例子中我们可以看到它的应用
let name = "John";

// 嵌入一个变量
alert( `Hello, ${name}!` ); // Hello, John!

// 嵌入一个表达式
alert( `the result is ${1 + 2}` ); // the result is 3
  • 没有 char 类型

4. Boolean 类型(逻辑类型)

boolean 类型仅包含两个值:true 和 false,它代表了两个逻辑概念,正确和错误。

let nameFieldChecked = true; // 存储给变量
let isGreater = 4 > 1; //也可以直接比较,这个例子的结果是true
5. null 值

不同于任何一个类型,单纯指的是“空”、“无”、“未知”

6. undefined 值

和null类似,也不同于任何一个类型,它指的是 “暂未赋值”
事实上,在声明后未初始化的变量的默认值就是 undefined

let age;
alert(age); // 弹出 "undefined"`
7. Object 类型和 Symbol 类型

非常重要,将在以后的笔记中单独出现

8. typeof 运算符

typeof 并不是一个数据类型,而是一个运算符,它的作用是判断一个变量或表达式的数据类型,返回对应的类型名称字符串,下面是一些例子:

typeof undefined // "undefined"

typeof 0 // "number"

typeof 10n // "bigint"

typeof true // "boolean"

typeof "foo" // "string"

typeof(x) 函数和 typeof 运算符结果一样,但一个是函数,一个是运算符,本质上不同,注意区分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值