写在开头

本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。

答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章。

对此,笔者换了随机阅读的方式,哪章感兴趣了或者想补知识点,再去翻阅对应的章节。当然目录还是要翻的。

工作生活节奏太快,知识太多,时间与知识的增长成反比,求全不如求专,也许不能看完全书,但至少掌握所需知识点。


思维导图是个好东西,一图流。

语法

标识符

  1. 由字母,下划线_,美元符号$,数字组成
  2. 第一个字符不能是数字
  3. 注意不要使用关键字作标识符
  4. 对象属性[]号写法可不遵循标识符规则 obj[123] = 123

数据类型

数据类型共有10个,ES5有7个,3个为ES6新增

number/boolean/string/undefined/object/null/function/symbol/set/map
  1. 判断类型可用typeof
  2. 判断对象为何种引用类型可用instanceof

undefined与null

  1. undefined (使用var声明但未初始化)
  2. null (空对象指针)
undefined == null // true

NaN

NaN表示本来应返回一个数值,结果未正确返回

  1. NaN不等于任何值,且不等于自身
  2. isNaN()可判断是否为NaN

数值转换

Number() 转型函数

参数值 结果
true 1
false 0
null 0
undefined NaN
'' 0
'168' 168
'168hello' NaN
'hello' NaN

TIPS:参数值为一个对象,则先调用valueOf(), 没有再调用toString(), 然后遵循上述规则

parseInt()

  1. 第一个参数为转换的值
  2. 第二个参数为转换的进制
  3. 会尝试解析字符串前面的数字(不同于Number())
parseInt('168hello') -> 168

parseFloat()

  1. 第一个小数点有效,忽略后面小数点的解析
  2. 会尝试解析字符串前面的数字
  3. 忽略前导0,只支持10进制,没有第二个参数 (不同于parseInt())
parseFloat('520.13.14') -> 520.14

字符串转换

toString() 方法

  1. 大多数数据类型拥有toString()方法,可在参数中指定转换进制
  2. null/undefined 没有toString()方法

String() 转型函数

  1. 如果参数值有toString()方法,则调用toString()方法
  2. null 转为 "null"
  3. undefined 转为 "undefined"

函数 function

  1. 不支持重载
  2. 后定义的函数会覆盖之前
  3. 参数数组对象:arguments

语句

  1. if...else...
  2. do...while... 后测试循环,不同于while/for前测试循环
  3. while
  4. for
  5. for...in... 遍历对象属性
  6. labelbreak/continue 合用
  7. switch...case... case 全等判断
  8. with 将代码作用域设置到特定的对象中

switch...case

  1. case 判断时是全等判断,不会进行类型转换
  2. case 值不一定是常量,可以是变量,甚至是表达式
case 'hello' + 'word';
case num < 10;

label

label语句允许在代码中添加标签,labelbreak/continue联合使用,可返回代码指定位置

var num = 0;

outermost:
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
if ( i== 5 && j == 5) {
break outermost;
// 退出循环(因为outermost定义的位置在最外层)
// 普通的break只能跳出一层循环
}
}
}

with

with语句的作用是将代码的作用域设置到一个特定的对象

// window.location 对象为例子
with(location) {
var url = href; // location.href
}

操作符

  1. 一元操作符
  2. 布尔运算符
  3. 算数运算符
  4. 关系运算符
  5. 条件运算符
  6. 赋值预算符
  7. 逗号运算符

一元操作

一元操作符指的是只能操作一个值的操作符

  1. 递增++
  2. 递减--
  3. 后置:语句被求值后执行自身赋值
var a = 2;
var b = 20;
var c = a-- + 20; // 后置运算 c: 22, a: 1

布尔运算符

逻辑非!

!! 功能等于 Boolean() 转型函数

逻辑与 &&
  1. 第一参数是对象,返回第二个参数
  2. 第一个参数为null/NaN/undefined, 则直接返回第一个参数
逻辑或 ||

规则与逻辑与相同,不同的是只要第一个参数成立则不会进行后续运算

TIPS:逻辑与或都属于短路运算,并不一定返回true/false,参数未声明可能会报错或赋值不成功

算数运算符

+, -, *, /, %

关系运算符

<, >, <=, >=, ==, ===, !=, !===
  1. 两个参数都是数值,进行值比较
  2. 两个参数都是字符串,进行字符编码比较(大写字母的字符编码小于小写字母)
  3. 一个参数是数值,则转为数值比较
  4. 一个参数是对象,则先调用其valueOf(),没有valueOf()再调用toString()
  5. === 全等会进行值与类型的比较
  6. null == undefined // true

条件运算符

三元表达式

var score = 90;
var achie = score > 90 ? '优秀' : '再接再厉';

逗号操作符

逗号操作符可以在一条语句执行多个操作,常用于变量初始化

TIPS: 用于赋值时,逗号操作符会返回表达式最后一项的值

var name = 'KenTsang', age = 28, job = 'Developer';

详解逗号表达式,可移步笔者的文章:《一道JS面试题引发的血案》

if-else/switch-case/?:/&&/||可移步笔者的文章: 《JS中 if/ if...else替换方式》


参考文档

作者:以乐之名

本文原创,有不当的地方欢迎指出。转载请指明出处。

读书笔记(06) - 语法基础 - JavaScript高级程序设计的更多相关文章

  1. 读书笔记(04) - 错误监控 - JavaScript高级程序设计

    错误类型 即时运行错误 (代码错误) 资源加载错误 常见的错误 1. 类型转换错误 建议使用全等===操作符 2.数据类型错误 建议加强类型判断 // 数组倒序 function reverseSor ...

  2. 【读书笔记】读《JavaScript高级程序设计-第2版》 - 非函数部分

    章节列表: 第08章:BOM 第09章:客户端检测 第10章:DOM 第11章:DOM2和DOM3 第12章:事件 第13章:表单脚本 第14章:错误处理与调试 第17章:Ajax和JSON第20章: ...

  3. 【读书笔记】读《JavaScript高级程序设计-第2版》 - 函数部分

    1. 定义 函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 对于函数 ...

  4. 《JavaScript高级程序设计》学习笔记12篇

    写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...

  5. 《JavaScript高级程序设计》读书笔记--前言

    起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...

  6. 读书时间《JavaScript高级程序设计》一:基础篇

    第一次看了<JavaScript高级程序设计>第二版,那时见到手上的书,第一感觉真是好厚的一本书啊.现在再次回顾一下,看的是<JavaScript高级程序设计>第三版,并记录一 ...

  7. JavaScript高级程序设计(读书笔记)(一)

    本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaScript诞生 19 ...

  8. 《Javascript高级程序设计》读书笔记之对象创建

    <javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...

  9. (读书笔记)函数参数浅析-JavaScript高级程序设计(第3版)

    ECMAScript函数不介意传递的参数个数,因为在其内部是用一个数组进行表示的.在函数体内可以通过arguments对象来访问这个参数数组,就像我们正常访问数组一样处理. arguments对象只是 ...

随机推荐

  1. 445. Add Two Numbers II 链表中的数字求和

    [抄题]: You are given two non-empty linked lists representing two non-negative integers. The most sign ...

  2. 使用jmail发送短信

    原文链接 https://blog.csdn.net/sdaujsj1/article/details/79248469 pom <!-- https://mvnrepository.com/a ...

  3. linux svnserver的安装使用备用

    先说一下初弄者的误区,svn上传到svnserver的文件是变化了的,会被打包加入svn的版本库里边一般存在db 文件下 每次提交会生成0,1,2 这样排序的文件,在  /var/svn/apple/ ...

  4. Win10电脑系统使用技巧

    现如今,电脑已经成为我们不可或缺的伙伴,陪伴着我们的工作.娱乐和生活,而Windows10在大家使用的电脑中占据了大多数,但是很多的小伙伴对它的许多功能并不真正了解,今天小编就带大家了解一下这些技巧, ...

  5. java中date日期格式的各种转换

    示例 Date dt =new Date(); System.out.println(dt); //格式: Wed Jul 06 09:28:19 CST 2016 //格式:2016-7-6 Str ...

  6. 简易数据库实现 UNIX环境高级编程(APUE)第二十章 A Database Library

    将课程的源代码 使用C++写了一部分 LINUX WINDOW均可运行 #ifndef MYDB_H #define MYDB_H #include <iostream> #include ...

  7. 解决win10系统无法安装.NET Framework 3.5

    方法1:“我的电脑”,单击右键选择“管理” 在打开的“计算机管理”窗口中依路径“服务和应用程序—服务”打开,在列表中找到“Windows Update”并双击打开. 启动类型:自动. 服务状态下面点击 ...

  8. HDMI EDID 处理过程

    DDC的参数 EDID是一种VESA 标准数据格式,其中包含有关监视器及其性能的参数,包括供应商信息.最大图像大小.颜色设置.厂商预设置.频率范围的限制以及显示器名和序列号的字符串.EDID数据标准: ...

  9. IOPLL动态重配

    连接 Avalon -MM接口 mgmt_waitrequest:当 PLL 重配置进程开始后,此端口变高并在 PLL 重配置期间保持高电平. PLL 重配置进程完成后,此端口变低. I/O PLL重 ...

  10. Go语言正则模块

    基本使用 import "bytes" import "fmt" import "regexp" func main() { //这个测试一 ...