读书笔记(06) - 语法基础 - JavaScript高级程序设计
写在开头
本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。
答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章。
对此,笔者换了随机阅读的方式,哪章感兴趣了或者想补知识点,再去翻阅对应的章节。当然目录还是要翻的。
工作生活节奏太快,知识太多,时间与知识的增长成反比,求全不如求专,也许不能看完全书,但至少掌握所需知识点。
思维导图是个好东西,一图流。
语法
标识符
- 由字母,下划线
_
,美元符号$
,数字组成 - 第一个字符不能是数字
- 注意不要使用关键字作标识符
- 对象属性[]号写法可不遵循标识符规则
obj[123] = 123
数据类型
数据类型共有10个,ES5有7个,3个为ES6新增
number/boolean/string/undefined/object/null/function/symbol/set/map
- 判断类型可用
typeof
- 判断对象为何种引用类型可用
instanceof
undefined与null
undefined
(使用var声明但未初始化)null
(空对象指针)
undefined == null // true
NaN
NaN表示本来应返回一个数值,结果未正确返回
NaN
不等于任何值,且不等于自身- 用
isNaN()
可判断是否为NaN
数值转换
Number() 转型函数
参数值 | 结果 |
---|---|
true | 1 |
false | 0 |
null | 0 |
undefined | NaN |
'' | 0 |
'168' | 168 |
'168hello' | NaN |
'hello' | NaN |
TIPS:参数值为一个对象,则先调用valueOf()
, 没有再调用toString()
, 然后遵循上述规则
parseInt()
- 第一个参数为转换的值
- 第二个参数为转换的进制
- 会尝试解析字符串前面的数字(不同于
Number()
)
parseInt('168hello') -> 168
parseFloat()
- 第一个小数点有效,忽略后面小数点的解析
- 会尝试解析字符串前面的数字
- 忽略前导0,只支持10进制,没有第二个参数 (不同于
parseInt()
)
parseFloat('520.13.14') -> 520.14
字符串转换
toString() 方法
- 大多数数据类型拥有
toString()
方法,可在参数中指定转换进制 null/undefined
没有toString()
方法
String() 转型函数
- 如果参数值有
toString()
方法,则调用toString()
方法 null
转为"null"
undefined
转为"undefined"
函数 function
- 不支持重载
- 后定义的函数会覆盖之前
- 参数数组对象:
arguments
语句
if...else...
do...while...
后测试循环,不同于while/for前测试循环while
for
for...in...
遍历对象属性label
与break/continue
合用switch...case...
case 全等判断with
将代码作用域设置到特定的对象中
switch...case
case
判断时是全等判断,不会进行类型转换case
值不一定是常量,可以是变量,甚至是表达式
case 'hello' + 'word';
case num < 10;
label
label语句允许在代码中添加标签,label
与break/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
}
操作符
- 一元操作符
- 布尔运算符
- 算数运算符
- 关系运算符
- 条件运算符
- 赋值预算符
- 逗号运算符
一元操作
一元操作符指的是只能操作一个值的操作符
- 递增
++
- 递减
--
- 后置:语句被求值后执行自身赋值
var a = 2;
var b = 20;
var c = a-- + 20; // 后置运算 c: 22, a: 1
布尔运算符
逻辑非!
!!
功能等于 Boolean() 转型函数
逻辑与 &&
- 第一参数是对象,返回第二个参数
- 第一个参数为null/NaN/undefined, 则直接返回第一个参数
逻辑或 ||
规则与逻辑与相同,不同的是只要第一个参数成立则不会进行后续运算
TIPS:逻辑与或都属于短路运算,并不一定返回true/false,参数未声明可能会报错或赋值不成功
算数运算符
+, -, *, /, %
关系运算符
<, >, <=, >=, ==, ===, !=, !===
- 两个参数都是数值,进行值比较
- 两个参数都是字符串,进行字符编码比较(大写字母的字符编码小于小写字母)
- 一个参数是数值,则转为数值比较
- 一个参数是对象,则先调用其
valueOf()
,没有valueOf()
再调用toString()
===
全等会进行值与类型的比较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高级程序设计的更多相关文章
- 读书笔记(04) - 错误监控 - JavaScript高级程序设计
错误类型 即时运行错误 (代码错误) 资源加载错误 常见的错误 1. 类型转换错误 建议使用全等===操作符 2.数据类型错误 建议加强类型判断 // 数组倒序 function reverseSor ...
- 【读书笔记】读《JavaScript高级程序设计-第2版》 - 非函数部分
章节列表: 第08章:BOM 第09章:客户端检测 第10章:DOM 第11章:DOM2和DOM3 第12章:事件 第13章:表单脚本 第14章:错误处理与调试 第17章:Ajax和JSON第20章: ...
- 【读书笔记】读《JavaScript高级程序设计-第2版》 - 函数部分
1. 定义 函数实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 对于函数 ...
- 《JavaScript高级程序设计》学习笔记12篇
写在前面: 这12篇博文不是给人看的,而是用来查的,忘记了什么基础知识,点开页面Ctrl + F关键字就好了 P.S.如果在对应分类里没有找到,麻烦告诉我,以便尽快添上.当然,我也会时不时地添点遗漏的 ...
- 《JavaScript高级程序设计》读书笔记--前言
起因 web编程过程使用javascript时感觉很吃力,效率很低.根本原因在于对javascript整个知识体系不熟,看来需要找些书脑补一下,同时欢迎众网友监督. 大神推荐书籍 看了博客大神们推荐的 ...
- 读书时间《JavaScript高级程序设计》一:基础篇
第一次看了<JavaScript高级程序设计>第二版,那时见到手上的书,第一感觉真是好厚的一本书啊.现在再次回顾一下,看的是<JavaScript高级程序设计>第三版,并记录一 ...
- JavaScript高级程序设计(读书笔记)(一)
本笔记汇总了作者认为“JavaScript高级程序设计”这本书的前七章知识重点,仅供参考. 第一章 JavaScript简介 JavaScript发展简史: 1995年,JavaScript诞生 19 ...
- 《Javascript高级程序设计》读书笔记之对象创建
<javascript高级程序设计>读过有两遍了,有些重要内容总是会忘记,写一下读书笔记备忘 创建对象 工厂模式 工厂模式优点:有了封装的概念,解决了创建多个相似对象的问题 缺点:没有解决 ...
- (读书笔记)函数参数浅析-JavaScript高级程序设计(第3版)
ECMAScript函数不介意传递的参数个数,因为在其内部是用一个数组进行表示的.在函数体内可以通过arguments对象来访问这个参数数组,就像我们正常访问数组一样处理. arguments对象只是 ...
随机推荐
- 最短路径(SP)问题相关算法与模板
相关概念: 有向图.无向图:有向图的边是双行道,无向图的边是单行道.在处理无向图时,可以把一条无向边看做方向相反的两条有向边. 圈 cycle / 回路 circuit:在相同顶点上开始并结束且长度大 ...
- jsp相关笔记(三)
在往数据库的表中写入数据时,一定要与表中的每一项对应,比如表中有三项,则写入的值也应该是三类: String getTitle=request.getParameter("title&quo ...
- iOS开发第三方库一 IQKeyboardManager
每一个iOS应用的开发者在工作中都会遇到需要用户键盘输入数据的需求,而输入框(UITextField/UITextView)的父界面可能是普通的UIView,也可能是UIScrollView,UITa ...
- Java 数组元素合并并去重
public class TestList { public static void main(String[] args) { Set<Integer> set = new TreeSe ...
- Spring MVC 的国际化和本地化
国际化: i18n 本地化: l10n java.util.Locale 类表示一个语言区域.一个 Locale 对象包含 3 个主要元件:language.country.variant java. ...
- 20165213周启航java学习总结
20165213周启航java学习总结 一.每周博客链接及二维码 预备作业一:我所期望的师生关系:http://www.cnblogs.com/rocedu/p/6255835.html#WEEK15 ...
- AutoCAD开发3--修改文字图层,颜色
Dim pText As AcadText Dim pColor1 As AcadAcCmColor Set pColor1 = Application.GetInterfaceObject(&quo ...
- Spring 添加属性集中常见方法
//创建容器,索要对象, package cn.lijun.Test; import org.junit.Test;import org.springframework.context.Applica ...
- 《Linux就该这么学》第六天课程
每个人都有梦想,同时也有理想,当一个人的梦想与理想相同时会发生什么? 搜集了一些对新手有用的表格 原创地址:https://www.linuxprobe.com/chapter-05.html use ...
- QT中报错collect2:ld returned 1 exit status的可能原因。
参考:https://blog.csdn.net/u014546553/article/details/78781547 1.编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述 ...