语言基础

语法

标识符

注释

//

/*

*/

严格模式

// 也可以单独指定在一个函数中进行
'use strict'

语句

  1. 语句末尾分号不是必须的,但是最好加上
  2. 加上分号方便开发者删除空行压缩代码
  3. 有助于提高性能,因为浏览器会尝试在合适的位置补上分号以纠正语法错误
  4. if之类的,即使是单条语句,也建议加上大括号

保留字和关键字

变量

ECMAScript变量是松散类型的变量可以用于保存任何类型数据,每个变量只不过是一个用于保存任意值的命名占位符

声明变量:

  1. var
  2. let
  3. const

var声明提升

使用var声明的变量,声明语句会提升到作用域顶端

let声明

  1. let与var最大的区别在于let声明的是块作用域,var声明的是函数作用域,块作用域是函数作用域的子集
  2. let没有变量提升
  3. 对声明冗余报错不会因混用 let 和 var 而受影响。这两个关键字声明的并不是不同类型的变量, 它们只是指出变量在相关作用域如何存在
  4. 在let声明之前的执行瞬间被称为暂时性死区
  5. 使用 let 在全局作用域中声明的变量不会成为 window 对象的属性(var 声 明的变量则会)
  6. 对于 let 这个新的 ES6 声明关键字,不能依赖条件声明模式
  7. 用let来声明for循环的变量,每次循环迭代都会创建一个新变量

const语句

  1. const语句声明时必须初始化
  2. const声明的限制只适用于它指向的变量的引用

声明风格

  1. 不使用var
  2. const优先,let次之

数据类型

六种简单数据类型:

  1. Undefined
  2. Null
  3. Boolean
  4. Number
  5. String
  6. Symbol

typeof操作符

使用typeof操作符会返回以下字符串之一

  1. undefined
  2. boolean
  3. string
  4. number
  5. object
  6. function
  7. symbol

undefined类型

Undefined类型只有一个值,就是undefined

声明了变量但是没有初始化就相当给变量赋值了undefined

Null类型

null类型同样只有一个值,即特殊值null

从逻辑上讲,null表示一个空对象指针

在定义用来保存对象的变量时,建议使用null来初始化

Boolean 类型

有两个字面值,不同类型装Boolean的表格

  1. True
  2. False

Number 类型

  1. 使用IEEE 754表示整数和浮点数
  2. 八进制第一个数字必须是0,如果后面的数字超过了7就会忽略前缀0,八进制在严格模式下是无效的
  3. 由于保存浮点数所需空间是整数的两倍,所以ECMAScript总是想方设法的将值转换为整数
  4. 0.1 + 0.2 != 0.3 由于IEEE 754标准的精度问题(二进制无法精确的表示0.1与0.2
  5. 值的范围
    1. Number.MIN_VALUE
    2. Number.MAX_VALUE
    3. 如果计算的结果超过js可以表示的范围就会被转换为一个特殊的Infinity
    4. isFinite()函数可以用于判断值是否合法
    5. NaN(Not a Number) 用于表示本来将要返回数值的操作失败了(而不是抛出错误
      1. 例如 0/1
      2. 设计NaN的操作都会返回NaN
      3. isNaN()会尝试将一个值转换为数值,任何不能转换为数值的值都会返回true

String 类型

字符串表示:

  1. '' ''
  2. ' '
  3. ``

字符串的特点

  1. 字符串一旦创建就不能改变了,要修改某个字符串的值,就需要先销毁原先字符串,然后再生成新的字符串
  2. toString() , 如果是数值调用时,可以添加一个底数参数
  3. 模板字符串
    1. 字符串插值
    2. 原始字符串 String.raw
    3. 标签函数
function tagFunction(strings, aValExpr, bValExpr, sumValExpr) {

 console.log(strings);

 console.log(aValExpr);

 console.log(bValExpr);

 console.log(sumValExpr);

 return sumValExpr;

}

let a = 1,

 b = 2;

let taggedResult = tagFunction `${a} + ${b} = ${a + b}`;

console.log(taggedResult);

/**

 * [ '', ' + ', ' = ', '' ]

 * 1

 * 2

 * 3

 * 3

 */

Symbol 类型

ES6新增

Object 类型

  1. constructor
  2. hasOwnProperty(propertyName)
  3. toLocaleString()
  4. toString()
  5. valueOf()

操作符

一元操作符

  1. 递增递减操作符
  2. 一元加和减

位操作符

  1. 位操作考虑32位即可 ,虽然ECMAScript中的所有值都以IEEE754 64位格式存储,但位操作并不直接应用64位,而是将值先转为32位
  2. 负数以二进制补码存储
  3. 按位非:~(对数值取反并减1)
  4. 按位与:&(将两个数的每一位对齐,然后每一位进行与操作)
  5. 按位或:|
  6. 按位异或:^
  7. 左移:<<
  8. 有符号右移:>>
  9. 无符号右移:>>>

布尔操作符

  1. 逻辑非:!
  2. 逻辑与:&&(短路特性)
  3. 逻辑或:||

乘性操作符

  1. 乘法操作符
  2. 除法操作符

指数操作符

  1. **, 也可以使用Math.pow()
  2. **=

add operator

  1. add: +
  2. sub: -

relationship operator

  1. >
  2. <
  3. >=
  4. <=

equal operator

  1. ==(only judge whether the value is equal)
  2. !=
  3. === (judge value as well as data type)

assignment operator

  1. =
  2. combine with other operator

comma operator

doing multiple operation in one sentence

let num = 1, num2 = 2, num3 = 3;

sentence

if

while

loop

do-while

a while sentence that test it after doing a loop

do {
// statement
} while (expression)

for

the 'for' sentence have initial code.

for-in

a strict iteration sentence, enumerated properties in an object

if the object that will be enumerated is null or undefinde, the loop sentence will not be executed.

for (property in expression) {
// statement
}

for-of

a strict iteration sentence, enumerated elements in an object

for (property of expression) {
// statement
}

label sentence

The label sentence is using to add label to sentence.

// syntax
label: statement;
// example
let count = 5; start: for (let i = 0; i < count; i += 1) { console.log(i); if (i === 2) continue start; }

break & continue

with

The useness of 'with' is setting the code scope to a certain object

let obj = {
age: 12,
name: 'azoux',
}; with(obj) {
console.log(name); // azoux
console.log(age); // 12
}

the strict mode would not allowed the use of 'with'.

switch

switch(expression) {
case value1:
statement
break;
case value2:
statement
break;
// case n
default:
break;
}

the reason why we add 'break' sentence to all cases is to avoid unnecessory judgement.

function

The best practice is that a function either returns a value or does not return a value. Functions that return values only under certain conditions will bring

Trouble, especially when debugging.

Javascript高级程序设计第三章 | ch3 | 阅读笔记的更多相关文章

  1. javascript高级程序设计第三章的一些笔记

    [TOC] 1. 语法 1.1 区分大小写 变量.函数名和操作费都区分大小写. 1.2 标识符 标识符指变量.函数.属性的名字,或者函数的参数.标识符按以下规则组合: 第一个字符必须是一个字母,下划线 ...

  2. JavaScript高级程序设计 第三章 基本概念

    ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...

  3. javascript高级程序设计第三章

    看后总结: 1.区分大小写 2.标识符是有字母下划线$开头,并有字母.下划线.数字.美元符号组成. 3.建议用驼峰法命名标识符. 4.注释: 单行:// 多行: /*   */ 5.严格模式: 在js ...

  4. Javascript高级程序设计 -- 第三章 -- 总结

    1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...

  5. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  6. 《JavaScript高级程序设计》——第二章在HTML使用JavaScript

    这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...

  7. JavaScript高级程序设计学习(三)之变量、作用域和内存问题

    这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...

  8. JavaScript高级程序设计第三版-读书笔记(1-3章)

    这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript   提供核心语言功能 DOM     提供访问 ...

  9. 《JavaScript高级程序设计第三版》——细碎知识痛点整理(第六章)

    面向对象的程序设计 对象是一组没有特定顺序的值6.1.1 属性类型ECMAScript中有两种属性:数据属性和访问器属性.1. 数据属性Configurable 表示能否通过delete删除属性从而重 ...

  10. 读Javascript高级程序设计第三版第六章面向对象设计--创建对象

    虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式  1 function CreatePerson(name,a ...

随机推荐

  1. JDBC 在性能测试中的应用

    简介: 我们能否绕开 http 协议,直接测试数据库的性能?是否觉得从数据库中导出 CSV 文件来构造压测数据很麻烦?怎样在压测结束后做数据清理?能不能通过数据库中的插入(删除)记录对压测请求做断言? ...

  2. 深度解析开源推荐算法框架EasyRec的核心概念和优势

    ​简介:如何通过机器学习PAI实现快速构建推荐模型 作者:程孟力 - 机器学习PAI团队 随着移动app的普及,个性化推荐和广告成为很多app不可或缺的一部分.他们在改善用户体验和提升app的收益方面 ...

  3. LabView十六进制与字符串之间的转换

    一.准备工具 Labview开发软件 字符串与十六进制的转换工具(做测试使用) 在线转换工具:IEE754浮点数16进制转换 本地工具如下图所示: 二.LabView字符串转换为十六进制 在数值中选择 ...

  4. centos7虚拟机部署netcore3.1服务供局域网访问

    如果买了亚马逊.腾讯.阿里等服务器,基本上几分钟就可以跑aspnetcore,外网访问分分钟.但是便宜点的服务器访问速度就没那么理想.这时候就需要考虑零成本的虚拟机部署了,当然这个基本都是局域网做测试 ...

  5. 云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理

    01 方案概述 现在绝大多数客户都有很多非结构化的数据存在 OSS 中,以图片,视频,音频居多.举一个图片处理的场景,现在各种终端种类繁多,不同的终端对图片的格式.分辨率要求也不同,所以一张图片往往会 ...

  6. 如何基于surging跨网关跨语言进行缓存降级

    概述 surging是一款开源的微服务引擎,包含了rpc服务治理,中间件,以及多种外部协议来解决各个行业的业务问题,在日益发展的今天,业务的需求也更加复杂,单一语言也未必能抗下所有,所以在多语言行业解 ...

  7. Gparted扩展硬盘空间

    需求:有一些磁盘占满了空间,例如/亦或者/opt目录等.可以通过Gparted扩展空间. 1.vmware添加ISO [添加光盘]gparted-live-cd添加至ISO 2.延迟引导启动,强制进入 ...

  8. centos 7 开启 httpd 服务和 80 端口

    centos 7 开启 httpd 服务和 80 端口 yum install -y httpd systemctl start httpd firewall-cmd --add-service=ht ...

  9. git checkout 命令图文详解

    目录 git checkout branchname (切换本地分支) 切换远程分支 放弃修改 git checkout . git checkout – filename git checkout ...

  10. C语言:渔夫捕鱼算法问题

    题目:渔夫捕鱼 A,B,C,D,E五个渔夫夜间合伙捕鱼,,第二天清A先醒来,他把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一份回家了,B醒来后,也把鱼均分五份,把多余的一条扔回湖中,便拿了自己的一 ...