学习Javascript数据结构与算法(第2版)笔记(1)

第 1 章 JavaScript简介

  • 使用 Node.js 搭建 Web 服务器
npm install http-server -g
http-server
  • JavaScript 的类型有数字、字符串、布尔值、函数和对象。还有 undefined 和 null ,以及数组、日期和正则表达式。
操作符
算数操作符 描述
+ 加法
- 减法
* 乘法
/ 除法
% 取余
++ 递增
-- 递减
赋值操作符 描述
= 赋值
+= 加/赋值 (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);
    }
}
  1. 继承
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());
  1. 使用属性存取器
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);
  1. 其他功能

ES6还有其他一些功能,包括列表迭代器、类型数组、 Set 、 Map 、 WeakSet 、 WeakMap 、模块、尾调用、 Symbol ,等等

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,055评论 0 13
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 4,348评论 0 5
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,014评论 0 1
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,037评论 0 21
  • 最近网站更新了一些需求,做了第三方登录,总结了一些,也是第一次做,有不足的地方欢迎指正!!! 申请过程就不说了,下...
    yi条咸鱼阅读 3,642评论 0 1