学习Javascript数据结构与算法(第2版)笔记(1)
第 1 章 JavaScript简介
- 使用 Node.js 搭建 Web 服务器
npm install http-server -g
http-server
JavaScript 的类型有数字、字符串、布尔值、函数和对象。还有 undefined 和 null ,以及数组、日期和正则表达式。
操作符
.cnblogs-markdown table th:nth-child(1){
width:150px;
}
.cnblogs-markdown table th:nth-child(2){
width:400px;
}
.cnblogs-markdown table th:nth-child(3){
width:150px;
}
| 算数操作符 | 描述 |
|---|---|
| + | 加法 |
| - | 减法 |
| * | 乘法 |
| / | 除法 |
| % | 取余 |
| ++ | 递增 |
| -- | 递减 |
| 赋值操作符 | 描述 |
|---|---|
| = | 赋值 |
| += | 加/赋值 (x += y) == (x = x + y) |
| -= | 减/赋值 (x -= y) == (x = x - y) |
| *= | 乘/赋值 (x *= y) == (x = x * y) |
| /= | 除/赋值 (x /= y) == (x = x / y) |
| %= | 取余/赋值 (x %= y) == (x = x % y) |
| 比较操作符 | 描述 |
|---|---|
| == | 相等 |
| === | 全等 |
| != | 不等 |
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| 逻辑操作符 | 描述 |
|---|---|
&& |
与 |
|| |
或 |
! |
非 |
| 位操作符 | 描述 |
|---|---|
| & | 与 |
| |
或 |
| ~ | 非 |
| ^ | 异或 |
| << | 左移 |
| >> | 右移 |
- typeof 操作符可以返回变量或表达式的类型
- JavaScript还支持 delete 操作符,可以删除对象里的属性
| 数值类型 | 转换成布尔值 |
|---|---|
| undefined | false |
| null | false |
| 布尔值 | true是 true ,false是 false |
| 数字 | +0 、 -0 和 NaN 都是 false ,其他都是 true |
| 字符串 | 如果字符串是空的(长度是0)就是 false ,其他都是 true |
| 对象 | true |
- 相等操作符( == 和 === )
| 类型(x) | 类型(y) | 结 果 |
|---|---|---|
| null | undefined | true |
| undefined | null | true |
| 数字 | 字符串 | x == toNumber(y) |
| 字符串 | 数字 | toNumber(x) == y |
| 布尔值 | 任何类型 | toNumber(x) == y |
| 任何类型 | 布尔值 | x == toNumber(y) |
| 字符串或数字 | 对象 | x == toPrimitive(y) |
| 对象 | 字符串或数字 | toPrimitive(x) == y |
- 如果x和y是相同类型,JavaScript会比较它们的值或对象值。其他没有列在这个表格中的情况
都会返回 false 。 - toNumber 和 toPrimitive 方法是内部的,并根据以下表格对其进行估值。
- toNumber 方法对不同类型返回的结果如下:
| 值类型 | 结 果 |
|---|---|
| undefined | NaN |
| null | +0 |
| 布尔值 | 如果是 true ,返回 1 ;如果是 false ,返回 +0 |
| 数字 | 数字对应的值 |
| 字符串 | 将字符串解析成数字。如果字符串中包含字母,返回 NaN ;如果是由数字字符组成的,转换成数字 |
| 对象 | Number(toPrimitive(vale)) |
- toPrimitive 方法对不同类型返回的结果如下:
| 值类型 | 结 果 |
|---|---|
| 对象 | 如果对象的 valueOf 方法的结果是原始值,返回原始值。如果对象的 toString方法返回原始值,就返回这个值;其他情况都返回一个错误 |
- === 操作符,如果比较的两个值类型不同,比较的结果就是 false 。如果比较的两个值类型相同,结果会根据下表判断。
| 类型(x) | 值 | 结 果 |
|---|---|---|
| 数字 | x和y数值相同(但不是 NaN ) | true |
| 字符串 | x和y是相同的字符 | true |
| 布尔值 | x和y都是 true 或 false | true |
| 对象 | x和y引用同一个对象 | true |
ECMAScript 6
- 用 let 替代 var 声明变量
- 常量 const PI = 3.141593;
- 模板字面量
var name='123';
console.log(`my name is ${name}`);
- 箭头函数
let circleArea2 = (r) => 3.14 * r * r;
- 函数的参数默认值
function sum(x=1,y=2,z=3){
return x+y+z;
}
sum(4,6);//13
- 声明展开和剩余参数
在ES5中,我们可以用 apply() 函数把数组转化为参数。
ES6有了展开操作符( ... )。
var params = [3, 4, 5];
console.log(sum(...params));
等价于
var params = [3, 4, 5];
console.log(sum.apply(undefined, params));
在函数中,展开操作符( ... )也可以代替 arguments ,当作剩余参数使用。
function restParamaterFunction (x, y, ...a) {
return (x + y) * a.length;
}
console.log(restParamaterFunction(1, 2, "hello", true, 7)); //输出9;
等价于
function restParamaterFunction (x, y) {
var a = Array.prototype.slice.call(arguments, 2);
return (x + y) * a.length;
};
- 增强的对象属性
ES6引入了数组解构的概念,可以用来一次初始化多个变量
var [x,y] = ['a','b'];//初始化
[x,y] = [y,x];//值互换
- 使用类进行面向对象编程
class Book { //{2}
constructor (title, pages, isbn) {
this.title = title;
this.pages = pages;
this.isbn = isbn;
}
printIsbn(){
console.log(this.isbn);
}
}
- 继承
class ITBook extends Book {
constructor (title, pages, isbn, technology) {
super(title, pages, isbn);
this.technology = technology;
}
printTechnology(){
console.log(this.technology);
}
}
let jsBook = new ITBook('学习JS算法', '200', '1234567890', 'JavaScript');
console.log(jsBook.title);
console.log(jsBook.printTechnology());
- 使用属性存取器
class Person {
constructor (name) {
this._name = name;
}
get name() {
return this._name;
}
set name(value) {
this._name = value;
}
}
let lotrChar = new Person('Frodo');
console.log(lotrChar.name); //{4}
lotrChar.name = 'Gandalf'; //{5}
console.log(lotrChar.name);
lotrChar._name = 'Sam'; //{6}
console.log(lotrChar.name);
- 其他功能
ES6还有其他一些功能,包括列表迭代器、类型数组、 Set 、 Map 、 WeakSet 、 WeakMap 、模
块、尾调用、 Symbol ,等等
学习Javascript数据结构与算法(第2版)笔记(1)的更多相关文章
- 重读《学习JavaScript数据结构与算法-第三版》- 第4章 栈
定场诗 金山竹影几千秋,云索高飞水自流: 万里长江飘玉带,一轮银月滚金球. 远自湖北三千里,近到江南十六州: 美景一时观不透,天缘有分画中游. 前言 本章是重读<学习JavaScript数据结构 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第5章 队列
定场诗 马瘦毛长蹄子肥,儿子偷爹不算贼,瞎大爷娶个瞎大奶奶,老两口过了多半辈,谁也没看见谁! 前言 本章为重读<学习JavaScript数据结构与算法-第三版>的系列文章,主要讲述队列数据 ...
- 重读《学习JavaScript数据结构与算法-第三版》-第2章 ECMAScript与TypeScript概述
定场诗 八月中秋白露,路上行人凄凉: 小桥流水桂花香,日夜千思万想. 心中不得宁静,清早览罢文章, 十年寒苦在书房,方显才高志广. 前言 洛伊安妮·格罗纳女士所著的<学习JavaScript数据 ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第3章 数组(一)
定场诗 大将生来胆气豪,腰横秋水雁翎刀. 风吹鼍鼓山河动,电闪旌旗日月高. 天上麒麟原有种,穴中蝼蚁岂能逃. 太平待诏归来日,朕与先生解战袍. 此处应该有掌声... 前言 读<学习JavaScr ...
- 重读《学习JavaScript数据结构与算法-第三版》- 第6章 链表(一)
定场诗 伤情最是晚凉天,憔悴厮人不堪言: 邀酒摧肠三杯醉.寻香惊梦五更寒. 钗头凤斜卿有泪,荼蘼花了我无缘: 小楼寂寞新雨月.也难如钩也难圆. 前言 本章为重读<学习JavaScript数据结构 ...
- 学习JavaScript数据结构与算法---前端进阶系列
学习建议 1.视频学习---认知 建议:在中国慕课上找"数据结构"相关的视频教程.中国大学MOOC 推荐清华大学.北京大学.浙江大学的教程,可先试看,然后根据自身的情况选择视频进行 ...
- 学习JavaScript数据结构与算法 (二)
学习JavaScript数据结构与算法 的笔记 包含第四章队列, 第五章链表 本人所有文章首发在博客园: http://www.cnblogs.com/zhangrunhao/ 04队列 实现基本队列 ...
- 学习JavaScript数据结构与算法 (一)
学习JavaScript数据结构与算法 的笔记, 包含一二三章 01基础 循环 斐波那契数列 var fibonaci = [1,1] for (var i = 2; i< 20;i++) { ...
- 学习JavaScript数据结构与算法 2/15
第一章 JavaScript简介 js不同于C/C++,C#,JAVA,不是强类型语言. 通常,代码质量可以用全局变量和函数的数量来考量(数量越多越糟).因此,尽可能避免使用全局变量. JS数据类型 ...
随机推荐
- Mina源码阅读笔记(二)- IoBuffer的封装
在阅读IoBuffer源码之前,我们先看Mina对IoBuffer的描述:A byte buffer used by MINA applications. This is a replacement ...
- ANSI控制码的说明
例如: echo -ne "\33[32m" 可以将字符的显示颜色改为绿色 echo -ne "\33[3;1H" 可以将光标移到第3行第1列处 具体的摘抄一些 ...
- SDWebimage的原理和使用机制
对于ASIHttp请求和AFNetworking请求都有关于图片缓存机制的使用,但是相对于专注运用在图片使用的SDWebimage来说,又有不一样的使用效果,最主要的体现在缓存数据的转换. SDWeb ...
- LeetCode(37)-Minimum Depth of Binary Tree
题目: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the ...
- js定义数组的方法
1.定义时赋值 var mycars=new Array("a","b","c") 2.new一个数组对象 var mycars=new A ...
- JeeSite中Excel导入导出
在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel.CSV格式居多.如果是学习的过程中,最好是自己实现数据导入与导出的功能,然而在项目中,还是调用现成的功能比较好.近期一直使用 ...
- 什么是C语言。C语言入门
C语言是一种通用计算机编程语言,应用广泛. C语言的设计目标是提供一种编程语言,它可以编译,处理低级内存,生成少量机器代码,并以简单的方式运行,而无需任何操作环境的支持.虽然C语言提供了许多低级处理功 ...
- XSS(跨域脚本攻击)应对之道
1.概念 xss一般分为两类,反射型和存储型. 反射型xss指的是客户端的不安全输入而引起的攻击,例如: 在某网站搜索,搜索结果会显示搜索的关键词,搜索时关键词填入<script>aler ...
- codeforces 979D Kuro and GCD and XOR and SUM
题意: 给出两种操作: 1.添加一个数字x到数组. 2.给出s,x,k,从数组中找出一个数v满足gcd(x,k) % v == 0 && x + v <= s && ...
- jndi通俗理解以及它的指令缺陷
jndi(java naming directory interface),可以把JNDI看成一个全局的目录服务接口,实现了这个接口的类可以提供你想要的东西,不管这个东西是什么,只要注册到了目录中就可 ...