JavaScript 笔记(二):基础类型

JavaScript 笔记(二):基础类型

字面量

整型

520
10086

实型

3.14
10.24

字符串

'Reyn'
"Morales"
'X'
"2048"
  • 不论是一个字符还是若干字符均为字符串

布尔

true
false

变量

var age = 21; // 初始化,如果没有初始化,内容为 undefined
console.log(age);

let name = 'Reyn Morales'; // ES6
console.log(name);

使用 var 和 let 定义变量的区别在于,使用 var 定义变量时,可以定义重名变量,且后定义的变量会覆盖先定义的变量,由于预解析的存在,可以先使用变量,之后再定义变量,此时,预解析会先将变量定义置于最前面,从而以使用未初始化的变量,而使用 let 定义变量则不会出现这些现象;此外,使用 var 定义的变量不会区分全局变量(简单理解为 {} 之外的变量,从定义开始之后,直到文件结束,在任何地方都可以使用【包括另外一个 script 标签中】)和局部变量(简单理解为 {} 之内的变量,从定义开始之后,直到括号结束,在大括号内部任何地方都可以使用,只要不在大括号内部,那么在 {} 之间定义的变量将失效),而使用 let 定义的变量区分全局变量和局部变量

常量

const PI = 3.14

关键字

在 JavaScript 中严格区分大小写

标识符

命名规则

  1. 标识符由字母、数字、下划线以及 $
  2. 不能以数字开头
  3. 严格区分大小写
  4. 不能使用关键字和保留字

由于 JavaScript 在底层使用 Unicode 编码,因此标识符可以使用 Unicode 编码中的字符(包括中文)

命名规范

  • 见名知意
  • 驼峰命名法

注释

//  单行注释

/*
    多行注释
*/

数据类型

概要

静态数据是指存储在硬盘中的永久保存的数据,而动态数据是指程序运行时在内存中临时产生的数据,程序运行时,将硬盘中的静态数据转移到内存中(动态数据)处理,处理之后将其再存放到硬盘上(静态数据)

JavaScript 中的动态数据类型如下:

  • 基本数据类型
    • Number 数值(整型/实型)
    • String 字符串(字符串)
    • Boolean 布尔(true/false)
    • Undefined 未定义(当某个变量未被初始化时,默认保存的内容为 undefined,值得注意的是,Undefined 是一个类型,而 undefined 是一个取值)
    • Null 空
  • 引用数据类型
    • Object 对象

JavaScript 提供了 typeof 运算符来检测某个变量的数据类型,示例如下:

console.log(typeof "Reyn Morales");
let num = 123;
console.log(typeof num);

类型转换

字符串
  1. Number 与 Boolean 类型的变量可以使用 toString 方法转换为字符串类型,示例如下:
let num = 520;
console.log(num);
console.log(typeof num);

let strNum = num.toString();
console.log(strNum);
console.log(typeof strNum);

toString 方法不会修改变量中存储的数据,返回的是数据的拷贝经过转换之后的结果,此外,字面量不可以使用此方法,而 Undefined 类型与 Null 类型的变量使用此方法会报错

  1. 使用 String 方法可以将 Number、Boolean、Undefined 和 Null 类型的变量或字面量转换为字符串类型,示例如下:
let a = undefined;
let aStr = String(a);
console.log(aStr);

let b = null;
let bStr = String(b);
console.log(bStr);

console.log(String(520));

String 方法类似于 toString 方法,不会修改变量中存储的数据,返回的是数据的拷贝经过转换之后的结果

  1. 不论是什么类型的变量还是字面量,均可以通过使用 + 运算符连接一个空字符串来转换为字符换,示例如下:
let num = 520;
console.log(num + "");

let isTrue = false;
console.log(isTrue + '');

console.log(undefined + "");

此方法本质上是浏览器在底层调用了 String 方法

数值
  1. 使用 Number 方法可以将 String、Boolean、Undefined 和 Null 类型的变量或字面量转换为数值类型,示例如下:
let str = "520";
let numStr = Number(str);
console.log(typeof numStr);

console.log(typeof Number("1024"))

let strNothing = "";
let numNothing = Number(strNothing);
console.log(numNothing);    // 0

let strEverything = "520Love You";
let numEverything = Number(numEverything);
console.log(numEverything); // NaN -> Not a Number

let bool = true;
let numBool = Number(bool);
console.log(numBool);   // 1

bool = false;
numBool = Number(bool);
console.log(numBool);   // 0

let nullVar = null;
let numNull = Number(nullVar);
console.log(numNull);   // 0

let xVar = undefined;
let numX = Number(numX);
console.log(numX);  // NaN

如果被转换的字符串为空(或任意数量的空格),那么结果为 0,如果被转换的字符串不仅为数字,那么结果为 NaN;如果被转换的类型为 Boolean 类型,如果值为 true,那么结果为 1,如果值为 false,那么结果为 0;如果被转换的类型为 Null 类型,那么结果为 0;如果被转换的类型为 Undefined 类型,那么结果为 NaN(Number 类型)

  1. 不论是什么类型的变量还是字面量,均可以通过在变量或字面量之前放置 +- 运算符,将其转换为数值类型,示例如下:
let a = "520";
let numA = +a;
console.log(numA);  // 520

let b = "520";
let numB = -b;
console.log(numB);  // -520

console.log(+"");   // 0

此方法本质上是浏览器在底层调用了 Number 方法,转换结果的规律与使用 Number 方法相同,值得注意是,如果使用的是 - 运算符,那么结果的符号为相反的,即如果原来是正数,那么转换之后为负数

  1. 可以使用 parseIntparseFloat 方法将不仅有数值的字符串中的数值内容提取出来,区别在于 parseInt 只能将结果转换为整型,而 parseFloat 只能将结果转换为整型或实型(由字符串中的内容决定),示例如下:
let a = "520Love you";
let numA = parseInt(a);
console.log(numA);  // 520

let b = "520.1314Love you";
let numB = parseInt(b);
console.log(numB);  // 520

numB = parseFloat(b);
console.log(numB);  // 520.1314

let c = "1314Forever";
let numC = parseFloat(c);
console.log(numC);  // 520

let d = "Love1314Forever";
let numD = parseInt(d);
console.log(numD);  // NaN

let e = true;
let numE = parseInt(e);
console.log(numE);  // NaN

方法 parseIntparseFloat 从左至右处理字符串,在遇到非数值时立刻停止,如果在停止之前没有出现数值,那么结果任然为 NaN,值得注意的是,不论被转换的数据类型是什么,parseIntparseFloat 方法均会将其作为字符串来处理,因此结果可能与预期不同

布尔

使用 Boolean 方法可以将 Number、String、Undefined 和 Null 类型的变量或字面量转换为布尔类型,示例如下:

let a = "xyz";
let boolA = Boolean(a);
console.log(boolA); // true

let b = "   ";
let boolB = Boolean(b);
console.log(boolB); // true

let c = "";
let boolC = Boolean(c);
console.log(boolC); // false

let d = 520;
let boolD = Boolean(d);
console.log(boolD); // true

let e = -520;
let boolE = Boolean(e);
console.log(boolE); // true

let f = 0;
let boolF = Boolean(f);
console.log(boolF); // false

let g = NaN;
let boolG = Boolean(g);
console.log(boolG); // false

let h = undefined;
let boolH = Boolean(h);
console.log(boolH); // false

let i = null;
let boolI = Boolean(i);
console.log(boolI); // false

由上述示例可以发现:NaN、0、undefined、null 和空字符串被转换后的结果为 false,其它任何内容被转化后的结果为 true

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值