笔记:《JavaScript学习指南》-第3章变量和常量

第3章 变量和常量

3.1 变量和常量

const 定义常量;
let 定义变量;
应尽可能使用常量。

ES6之前使用var来定义变量。

使用浏览器控制台调试时,用const、let定义变量后,不能再重新提交相同的代码,否则会报错“ ... has already been declared”。可以使用F5 刷新。

3.3 标识符命名

变量和常量统统称为标识符。必须以字母、$、下划线( _ )开头。
驼峰命名法、蛇型命名法。

3.4 字面量

本质上,字面量是一种创建值的方式,JavaScript会使用开发人员提供的字面量去创建一个数据值。

3.5 基本类型和对象

在JavaScript中,只有基本类型和对象这两种值。
基本类型的值是不可变的。不可变不是指变量不可变。
六种基本类型:
  •     数字
  •     字符串
  •     布尔
  •     null
  •     underfined 
  •     符号 (ES6新特性)

JavaScript有几种内置对象:
  • Array
  • Date
  • RegExp
  • Map 和 WeakMap
  • Set 和 WeakSet

基本类型的数字、字符串、布尔值有对应的对象类型,Number、String、Boolean。这些对象不会真的存储一个值(基本类型则会存储值),它们只是具备关联到对应基本类型的功能。

3.6 数字

JavaScript有两种格式的近似值:IEEE-764 双精度和浮点型。
JavaScript只有一种数值数据类型。
JavaScript能识别4种类型的数字字面量:十进制数、二进制数、八进制数和十六进制数。
此外,还有一些特殊值,比如正负无穷大,以及NaN(从技术上讲,它们不是数字,但会返回数值)。特殊值可以用作占位符。
 

3.7 字符串

字符串是最简单的文本数据。在JavaScript中表示Unicode文本。
单引号、双引号或者重音符都可以表示字符串字面量。
重音符是ES6引入的,它是为了启用模板字符串。
使用反斜杠( \ )进行转义。

3.8 特殊字符

反斜线可以表示某些不可打印的字符。
  • \n   换行
  • \r    回车
  • \t    制表符
  • \'    单引号
  • \"    双引号
  • `     重音符(tab键上方的按键)
  • \$    美元符
  • \\     反斜线
  • \u XXX    任意的Unicode码
  • \x XX       Latin1字符

其他不常用的特殊字符:
  • \0    NUL字符
  • \v    垂直制表符
  • \b    退格
  • \f     分页

3.8.1 模板字符串

ES6之前,使用字符串连接是唯一的实现方式。现在可使用模板字符串。
${ } ,如果紧跟 $ 的值被包裹在大括号中,那么该值就会被注入到字符串中。
模板字符串使用重音符 ( ` )
let currentTemp = 19.5;
const message = `The curren temperatrue is ${currentTemp} \u00b0C`;

3.8.2 多行字符串

const multiline = "line1\n"+
"line2\n"+
"line3";

3.8.3 数字用作字符串

给数字加上引号,数字就会变成字符串。

3.9 布尔型

true、false

3.10 符号

ES6的新特性。
它是一种新的数据类型,代表一个唯一的标志。它不会匹配其他任何符号。
Symbol() 构造方法可用来创建符号。还可在构造方法中传入一些描述信息。
const RED = Symbol();
const ORSNGE = Symbol("The color of a sunset!");
RED === ORANGE;    //false:每个符号都是唯一的

3.11 null 和 underfined

一般来说,null 给开发者使用,而 underfined 给 JavaScript 使用,用来表示未赋值的内容。
只有在有意的模仿变量未赋值的时候,才会使用underfined。

3.12 对象

基本类型只能代表一个值,而对象可以代表多个值或者复制的值,而且这个值在其生命周期内都是可变的。
本质上,对象是一个容器,容器的内容可以随着时间推移而改变。
对象的语法:大括号 {}
对象的内容称作属性(或成员),属性是由名称(或键)和值做成。
键必须是字符串或者符号,值可以是任意类型。
const obj = {};

//size是合法的字符串标识符
obj.size;    //underfined

//" not an identifier"是不合法的字符串标识符
obj["not an identifier"] = 3;
obj["not an identifier"] ;   //3

//使用符号
const SIZE = Symbol();
obj[SIZE] = 8;
obj[SIZE];    //8

对象还可以包含函数。

3.13 Number,String 和 Boolean 对象

数字、字符串和布尔型都有对应的对象类型。
这些对象有两个用途:一是存储特殊值;二是以函数形式提供某些功能。

3.14 数组

数组是一种特殊类型的对象。
数组的内容天生具有自然排序特性。键是数字,并且是有序的。它具有强大的传递信息的能力。
数组特性:
  • 数组长度不固定,可以随时添加和删除元素。
  • 数组中元素的类型是多样的,每个元素都可以是任意类型。
  • 数组从下标0开始。

数组属性length,返回数组元素的个数。

3.15 拖尾逗号

const arr  = [
"one",
"two",    
"three",    //可加可不加
];
JSON 不允许存在拖尾符号。

3.16 日期

//创建当前日期
const now = new Date();

//创建指定日期,注意月份是从0开始的,9=10月
const halloween = new Date(2016,9,31);

//创建指定日期和时间,19:00 = 7:00 pm
const halloweenParty = new Date(2016, 9, 31, 19, 0);

//一些方法检索Date对象的组件
halloweenParty.getFullYear();    //2016
halloweenParty.getMonth();    //9
halloweenParty.getDate();    //31
halloweenParty.getDay();    //1:周一

halloweenParty.getHours();    //19
halloweenParty.getMinutes();    //0
halloweenParty.getSeconds();    //0
halloweenParty.getMilliseconds;    //0

3.17 正则表达式

正则表达式算是一个子语言。通过一种简洁的方式完成字符串的复杂搜索和替换。
//简单邮件识别器
const email = /\b[a-z0-9._-]+@[a-z_-]+(?:\.[a-z]+)+\b/;

//US手机号码识别器
const phone = /(:?\+1)?(:?\(\d{3}\)\s?|\d{3}[\s-]?)\d{3}[\s-]?\d{4}/;


3.18 映射和集合(Map 和 Set)

ES6引进Map 和 Set,以及它们的“弱”引用类型WeakMap 和 WeakSet。
映射也是一种对象,它将键和值关联映射在一起,但在某些特定的场合它比对象更有优势。
集合类似于数组,但它不允许重复元素。
弱引用类型的功能与其对应的类型相似,但在某些情况下,它们在功能上做了权衡以换取更好的性能。
    见第10章。

3.19 数据类型转换

3.19.1 转换成数字

第一种方法,使用Number对象的构造方法:
const numStr = "33.3";
const num = Number(numStr);
如果字符串内容不符合数字格式,就会返回NaN。

第二种方法,使用内置函数 parseInt 和 parseFloat 。它们会忽略任何跟数字不相关的信息。parseInt第二个参数指定一个基数,代表将要把数字转成什么格式,如十进制、十六进制。parseFloat始终假定参数为十进制。
const a = parseInt("16 volts", 10);    //16
const b = parseInt("3a", 16);    //58
const c = parseFloat("15.5 kph");    //15.5

日期转成数字:
const d = new Date();
const ts = d.valueOf();

布尔值转数字,1(true)或 0(false),使用条件操作符
const b = true;
const n = b? 1 : 0 ;

3.19.2 转成字符串

JavaScript任何对象都有toString() 方法,返回该对象的字符串形式。
数字转字符串:
const n = 33.5;
n;    //33.5
const s = n.toString();
s;    //"33.5"

数组转字符串:
const arr = [1,true,"hello"];
arr.toString();    //"1,true,hello"

Date对象重新实现了一个很有用的toString() 方法,但是大部分对象都只是简单的返回字符串“[object Object]”。

3.19.3 转换成布尔型

可以使用两次“not”操作符( ! ) 将任何值转换成布尔值。使用一次,布尔值跟预期的相反。
数字转布尔值,Boolean对象的构造方法(没有new关键字)也是一个很好的方式:
const n = 0;

const b1 = !!n;    //false
const b2 = Boolean(n);    //false



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值