Javascript学习笔记(犀牛书1、2章)

引子:本来一直在做尚品汇的Vue3项目的,在前期基础的积淀下做项目其实已经没什么难点了,但是最近出差网络很差,没法弄,为了把出差的空余时间利用起来,正好把基础再练习一下,之前我学python的时候是把书里的每一个案例都啃透了的,所以自己在使用pyqt或者查找async库的bug时能够游刃有余,当然做项目肯定比学基础在激发兴趣的方面效果更好,但也不能说学基础没有用,这次我选用的是犀牛书《JavaScript权威指南》,跟红宝书《JavaScript高级编程》(我已经整本都看过了)比起来,犀牛书难度略高,但版本略新,因此操作性也略强些,但也适用于不那么小白的程序员学习练手(比如说我),如果是作为工具书的话红宝书会更全一点。这个弄完后期我再弄来html和css的基础来练练手,把没网的时间利用起来。我有信心自己能够成为一个称职的前端程序猿,从零开始自学成为一个合格的前端工程师容易(我是业余时间无压力自学,因此学习进度慢,如果是失业在家从零开始我学习的进度肯定会更快,但过程肯定会更痛苦),把自己一路走过来的历程记录下来是比较难的。所以我想把自己一路自学过来的历程记录下来供初学者们参考,毕竟等我真正入行以后很可能忙的忘记了初心。奥,对了,之前在杭州和福州面试了几家公司,大概知道了现在前端行业的要求和自己的不足之处,等多面几家以后我会分享一下自己的面试题和面试经历的,当然因为自己的铁饭碗所以现在并不那么着急,废话不多说上笔记。
第一章:
1.1和1.2:JavaScript是最火的程序语言,因为它是弱类型语言(现在的typescript就是用于纠正这一点)ES6是历代版本更迭中变动最大的一次,增加了类和模块语法。为了向下兼容,一些低版本(ES6之前)的特性得以保留,但使用use strict指令或者使用新语言特性会触发严格模式。可以使用浏览器开发者工具或者nodejs环境又或者编写html在浏览器中打开来使用js,在后两者中常使用console.log语法来打印结果。
1.3:这本书已经通篇在使用let和const了,所以我们可以大胆地废弃之前的var了。这里列举了一些数据类型(数值,字符串,布尔值,null,undefined,对象,数组),不知道全不全。对象是一个键值对的集合,类似于python里的字典。遇到不懂的多练多写,这里的键可以省略“”,但它其实就是一个字符串,可以使用book.topic或者book[“topic”]来访问属性,当属性名是变量或者数字时只能使用book[]的方式来使用,对象的值必须是基本类型中的一种或者指向它们的变量。
在这里插入图片描述

这里还提到一个ES2020的语法?.有点类似于正则里的非贪婪运算符。可以看到,它与三元运算符的不同(前一个属性没有就会返回undefine而不会使用后面的)。
在这里插入图片描述

数组语法和其它语言没什么两样,第一个索引为0,数据结构也是可以嵌套的。
函数的前两种用法function myfunction(a){}和let a=function(a){};a();和其它语言无异。
还有很重要的js独有的箭头函数,这是ES6后新增的,这个挺重要,很多面试会问ES6的新特性。箭头函数只有一个参数时可以省略(),只有一条语句时可以省略{}和return。
Js中的数据无论是字面量还是对象都有内置的方法。在使用基本类型如数值和bool值时可以全等===,但即使两个内容相同的引用对象也不会===。这里还使用了类的语法写了一个Point类,js类的实现本质还是原型链,虽然es6之后出现了类并且它的写法与其他语言很类似。
1.4这是一个完备的案例程序,初学者可以直接跳过,有基础的可以运行一下复习,用到了许多api甚至还有期约,在如今框架横行培训班泛滥的情况下,学习基础仍然是十分必要的。在看到一些不怎么熟悉的语法比如…的时候,大可以自己编写代码运行一下,可以加深印象。
这个程序有一定复杂度,可以在学完之后的课程后再回头看效果会更佳。
2.1一些关于js的常识,js语法区分大小写,忽略符号间的空格,将制表符,ASCII控制符和Unicode间隔识别为空格,将换行符回车符和/换行序列识别为行终止符,这个我刚开始还以为是vscode的特性。试验后可以看到确实是js语法特性。如果语义连贯,可以直接写在多行中,否则要加;当然也可以把多个短句写在单行(在实际中比较少用),了解这些特性之后,在之后编写程序就可以有的放矢。
在这里插入图片描述

2.2两种注释方式//和/* */
2.5可以用Unicode作为标识符,标识符就是变量名,Unicode通俗理解就是中文以及除了英语之外的语言。
在这里插入图片描述

2.5.1为了在老系统中使用unicode,会使用unicode的ascii转义序列,这种情况现在其实已经比较少遇到了,但还是可以了解一下,以后在遇到\u这种形式的时候知道去哪查就行了。
2.5.2翻译起来就是,如果你用中文作变量名,要考虑到同一个中文名被解释成两个变量,这是由于unicode转义成ascii的编码方式不同,这个转换过程要你自己去统一,不过一般这种情况也比较少遇到。
2.6这个和之前提到的js解析规则一样,它会尽可能地将更多的东西解析为一个句子。基于这种规则,以(,[,/,+,-开头的有可能被当成上一行的后续,实际中(和[用的比较多,特别是(作为立即执行函数iifc经常出现。按照通用的编程方式(单句换行),在不使用;的情况下,只需要注意(和[。

猜你喜欢

转载自blog.csdn.net/returnadsss/article/details/129635015
今日推荐