资讯专栏INFORMATION COLUMN

读书笔记(06) - 语法基础 - JavaScript高级程序设计

iOS122 / 1893人阅读

摘要:写在开头本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了。可移步笔者的文章中替换方式参考文档高级程序设计作者以乐之名本文原创,有不当的地方欢迎指出。

写在开头

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

答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章。
对此,笔者换了随机阅读的方式,哪章感兴趣了或者想补知识点,再去翻阅对应的章节。当然目录还是要翻的。

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


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

语法 标识符

由字母,下划线_,美元符号$,数字组成

第一个字符不能是数字

注意不要使用关键字作标识符

对象属性[]号写法可不遵循标识符规则 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... 遍历对象属性

labelbreak/continue 合用

switch...case... case 全等判断

with 将代码作用域设置到特定的对象中

switch...case

case 判断时是全等判断,不会进行类型转换

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
}
操作符

一元操作符

布尔运算符

算数运算符

关系运算符

条件运算符

赋值预算符

逗号运算符

一元操作

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

递增++

递减--

后置:语句被求值后执行自身赋值

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替换方式》

参考文档

《JavaScript高级程序设计》

作者:以乐之名
本文原创,有不当的地方欢迎指出。转载请指明出处。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108846.html

相关文章

  • 001-读书笔记-JavaScript高级程序设计 JavaScript简介

    摘要:由于计算机的国际化,组织的标准牵涉到很多其他国家,因此组织决定改名表明其国际性。规范由万维网联盟制定。级标准级标准是不存在的,级一般指的是最初支持的。 这篇笔记的内容对应的是《JavaScript高级程序设计(第三版)》中的第一章。 1.ECMA 和 ECMA-262 ECMA 是欧洲计算机制造商协会的缩写,全程是 European Computer Manufacturers Ass...

    masturbator 评论0 收藏0
  • 读书笔记(04) - 错误监控 - JavaScript高级程序设计

    摘要:项目中我们可通过设置采集率,或对规定时间内数据汇总再上报,减少请求数量,从而缓解服务端压力。借鉴别人的一个例子只采集上报错误参考文档高级程序设计如何优雅处理前端异常作者以乐之名本文原创,有不当的地方欢迎指出。 showImg(https://segmentfault.com/img/bVbnuud?w=640&h=640); 错误类型 即时运行错误 (代码错误) 资源加载错误 常见...

    Null 评论0 收藏0
  • 004-读书笔记-JavaScript高级程序设计 基本概念(下)

    摘要:操作符,会将数值改变正数变成负数负数变成正数。同时,也说明了,使用两个逻辑非操作符和的操作结果相同。操作符得到的是余数。不相等操作符有两种。 这篇笔记的内容对应的是《JavaScript高级程序设计(第三版)》中的第三章。 1.操作符 1-1 一元操作符 递增和递减操作符 递增和递减操作符有两个 ++ 和 --。一元操作符使用的时候,可以前置也可以后置。由于两个操作方式类似,先只说明 ...

    nevermind 评论0 收藏0
  • 读书笔记(01) - JSON - JavaScript高级程序设计

    摘要:用于把对象序列化字符串,在序列化对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。对第步返回的每个值进行相应的序列化。参考文档高级程序设计作者以乐之名本文原创,有不当的地方欢迎指出。 showImg(https://segmentfault.com/img/bVburW1?w=658&h=494); JSON与JavaScript对象 JSON是一种表示结构化数据的存储格式,语...

    mengbo 评论0 收藏0
  • Effective JavaScript读书笔记(一)

    摘要:如果为假值,不传或者传入,函数都会返回但是,传入这个值是完全有可能的,所以这种判断形势是不正确的或者使用来判断也可以原始类型优于封装类型对象拥有六个原始值基本类型布尔值,数字,字符串,,和对象。 作为一个前端新人,多读书读好书,夯实基础是十分重要的,正如盖楼房一样,底层稳固了,才能越垒越高。从开始学习到现在,基础的读了红宝书《JavaScript高级程序设计》,犀牛书《JavaScri...

    zhoutao 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<