Javascript高级程序设计第三章 | ch3 | 阅读笔记
语言基础
语法
标识符
注释
//
/*
*/
严格模式
// 也可以单独指定在一个函数中进行
'use strict'
语句
- 语句末尾分号不是必须的,但是最好加上
- 加上分号方便开发者删除空行压缩代码
- 有助于提高性能,因为浏览器会尝试在合适的位置补上分号以纠正语法错误
- if之类的,即使是单条语句,也建议加上大括号
保留字和关键字
变量
ECMAScript变量是松散类型的,变量可以用于保存任何类型数据,每个变量只不过是一个用于保存任意值的命名占位符
声明变量:
- var
- let
- const
var声明提升
使用var声明的变量,声明语句会提升到作用域顶端
let声明
- let与var最大的区别在于let声明的是块作用域,var声明的是函数作用域,块作用域是函数作用域的子集
- let没有变量提升
- 对声明冗余报错不会因混用 let 和 var 而受影响。这两个关键字声明的并不是不同类型的变量, 它们只是指出变量在相关作用域如何存在
- 在let声明之前的执行瞬间被称为暂时性死区
- 使用 let 在全局作用域中声明的变量不会成为 window 对象的属性(var 声 明的变量则会)
- 对于 let 这个新的 ES6 声明关键字,不能依赖条件声明模式
- 用let来声明for循环的变量,每次循环迭代都会创建一个新变量
const语句
- const语句声明时必须初始化
- const声明的限制只适用于它指向的变量的引用
声明风格
- 不使用var
- const优先,let次之
数据类型
六种简单数据类型:
- Undefined
- Null
- Boolean
- Number
- String
- Symbol
typeof操作符
使用typeof操作符会返回以下字符串之一
- undefined
- boolean
- string
- number
- object
- function
- symbol
undefined类型
Undefined类型只有一个值,就是undefined
声明了变量但是没有初始化就相当给变量赋值了undefined
Null类型
null类型同样只有一个值,即特殊值null
从逻辑上讲,null表示一个空对象指针
在定义用来保存对象的变量时,建议使用null来初始化
Boolean 类型
有两个字面值,不同类型装Boolean的表格
- True
- False
Number 类型
- 使用IEEE 754表示整数和浮点数
- 八进制第一个数字必须是0,如果后面的数字超过了7就会忽略前缀0,八进制在严格模式下是无效的
- 由于保存浮点数所需空间是整数的两倍,所以ECMAScript总是想方设法的将值转换为整数
- 0.1 + 0.2 != 0.3 由于IEEE 754标准的精度问题(二进制无法精确的表示0.1与0.2
- 值的范围
- Number.MIN_VALUE
- Number.MAX_VALUE
- 如果计算的结果超过js可以表示的范围就会被转换为一个特殊的Infinity
- isFinite()函数可以用于判断值是否合法
- NaN(Not a Number) 用于表示本来将要返回数值的操作失败了(而不是抛出错误
- 例如 0/1
- 设计NaN的操作都会返回NaN
- isNaN()会尝试将一个值转换为数值,任何不能转换为数值的值都会返回true
String 类型
字符串表示:
- '' ''
- ' '
- ``
字符串的特点
- 字符串一旦创建就不能改变了,要修改某个字符串的值,就需要先销毁原先字符串,然后再生成新的字符串
- toString() , 如果是数值调用时,可以添加一个底数参数
- 模板字符串
- 字符串插值
- 原始字符串 String.raw
- 标签函数
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 类型
- constructor
- hasOwnProperty(propertyName)
- toLocaleString()
- toString()
- valueOf()
操作符
一元操作符
- 递增递减操作符
- 一元加和减
位操作符
- 位操作考虑32位即可 ,虽然ECMAScript中的所有值都以IEEE754 64位格式存储,但位操作并不直接应用64位,而是将值先转为32位
- 负数以二进制补码存储
- 按位非:~(对数值取反并减1)
- 按位与:&(将两个数的每一位对齐,然后每一位进行与操作)
- 按位或:|
- 按位异或:^
- 左移:<<
- 有符号右移:>>
- 无符号右移:>>>
布尔操作符
- 逻辑非:!
- 逻辑与:&&(短路特性)
- 逻辑或:||
乘性操作符
- 乘法操作符
- 除法操作符
指数操作符
- **, 也可以使用Math.pow()
- **=
add operator
- add: +
- sub: -
relationship operator
- >
- <
- >=
- <=
equal operator
- ==(only judge whether the value is equal)
- !=
- === (judge value as well as data type)
assignment operator
- =
- 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 | 阅读笔记的更多相关文章
- javascript高级程序设计第三章的一些笔记
[TOC] 1. 语法 1.1 区分大小写 变量.函数名和操作费都区分大小写. 1.2 标识符 标识符指变量.函数.属性的名字,或者函数的参数.标识符按以下规则组合: 第一个字符必须是一个字母,下划线 ...
- JavaScript高级程序设计 第三章 基本概念
ch3 基本概念 标签(空格分隔): JavaScript 语法 标识符 - 第一个字符必须是字母.下划线或美元 - 驼峰大小写格式 严格模式 ECMAScript5引入,定义了一种解析和执行模型.此 ...
- javascript高级程序设计第三章
看后总结: 1.区分大小写 2.标识符是有字母下划线$开头,并有字母.下划线.数字.美元符号组成. 3.建议用驼峰法命名标识符. 4.注释: 单行:// 多行: /* */ 5.严格模式: 在js ...
- Javascript高级程序设计 -- 第三章 -- 总结
1.Javascript有几种数据类型 2.变量 Javascript有几种数据类型 JavaScript中有5种简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Nu ...
- JavaScript高级程序设计第三版.CHM【带实例】
从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...
- 《JavaScript高级程序设计》——第二章在HTML使用JavaScript
这章讲的是JavaScript在HTML中的使用,也就是<script>元素的属性.书中详细讲了async.defer.src和type四个<script>的属性. 下面是对第 ...
- JavaScript高级程序设计学习(三)之变量、作用域和内存问题
这次讲的主要是变量,作用域和内存问题. 任何一门编程语言,都涉及这三个. 变量,比如全局变量,局部变量等,作用域,也分全局作用域和方法作用域,内存问题,在java中就涉及到一个垃圾回收的问题,由于ja ...
- JavaScript高级程序设计第三版-读书笔记(1-3章)
这是我第一次用markdown,也是我第一次在网上记录我自己的学习过程. 第一章 JavaScript主要由以下三个不同的部分构成 ECMAScript 提供核心语言功能 DOM 提供访问 ...
- 《JavaScript高级程序设计第三版》——细碎知识痛点整理(第六章)
面向对象的程序设计 对象是一组没有特定顺序的值6.1.1 属性类型ECMAScript中有两种属性:数据属性和访问器属性.1. 数据属性Configurable 表示能否通过delete删除属性从而重 ...
- 读Javascript高级程序设计第三版第六章面向对象设计--创建对象
虽然Object构造函数或者对象字面量都可以用来创建单个对象,但是缺点非常明显:使用同一接口创建很多对象,会产生大量重复代码. 工厂模式 1 function CreatePerson(name,a ...
随机推荐
- 企业版Spark Databricks + 企业版Kafka Confluent 联合高效挖掘数据价值
简介:本文介绍了如何使用阿里云的Confluent Cloud和Databricks构建数据流和LakeHouse,并介绍了如何使用Databricks提供的能力来挖掘数据价值,使用Spark ML ...
- 揭秘阿里云神龙团队拿下TPCx-BB排名第一的背后技术
简介:阿里云自主研发的神龙大数据加速引擎获得了TPCx-BB SF3000世界排名第一的成绩. 一 背景介绍 近日,TPC Benchmark Express-BigBench(简称TPCx- ...
- 好代码实践:基于Redis的轻量级分布式均衡消费队列
简介: 好代码,给人第一个印象的感觉,就像一篇好文章一样,读起来朗朗上口.不同的文章有不同的风格体裁,不同的代码也有不同的编程风格要求.Python有严格的缩进,像诗歌一样工整对仗:C语言面向过程像散 ...
- [FAQ] GitHub 开启二次验证之后,如何通过 https clone 项目 ?
在 Github Personal Access Tokens 页面,点击生成一个新的 tokon. 此时使用这个 token 作为用户的密码来 clone 项目.
- dotnet 警惕 ConcurrentDictionary 使用 FirstOrDefault 获取到非预期的首项
在 dotnet 里面的 ConcurrentDictionary 是一个支持并发读写的线程安全字典,在这个字典里面有一些行为会出现随机性,即多次执行相同的代码返回的结果可能不相同.本文记录在 Con ...
- vue使用echart(地图,弹窗展示多条数据,option定义)
第二次用echart,第一次做地图, <template> <div class="echarts" style="background:#3bafde ...
- 【GUI开发】用python爬YouTube博主信息,并开发成exe软件!
目录 一.背景介绍 二.代码讲解 2.1 爬虫 2.2 tkinter界面 2.3 存日志 三.说明 一.背景介绍 你好,我是@马哥python说,一名10年程序猿. 最近我用python开发了一个G ...
- 微服务从代码到k8s部署应有尽有系列全集
微服务从代码到k8s部署应有尽有系列全集 https://mp.weixin.qq.com/s/8U2h85YJHy3H3hzlBakPPw 实战项目地址:https://github.com/Mik ...
- 手把手教你整Win10的Linux子系统(Ubuntu)
手把手教你整Win10的Linux子系统(Ubuntu) https://www.bilibili.com/read/cv7770224/ 设置root用户的密码 可以通过 sudo passwd r ...
- NASM中的内存引用
NASM对于内存的引用规则非常简单,如果想访问内存中的内容,就将地址用[]包围,如果没有[],就表示是地址本身,而不是内容. mov ax,[wordvar] mov ax,[wordvar+1] m ...