javascript语言精粹读书笔记——第二章

书中用铁路图来描述语法

特意看了维基百科的连接,总结下Syntax_diagram的规则:

  • 从左边开始,沿着轨道到右边界
  • 沿途在圆框中遇到的是字面量,方框中遇到的是规则和描述
  • 沿着轨道能走通的都是合法的
  • 任何沿着轨道不能走通的都是非法的
  • 末端有一条竖线的标示允许在任意一对符号中间插入空白,而在末端有两个竖条不允许。

在维基百科的连接:http://en.wikipedia.org/wiki/Syntax_diagram

关于注释:/* */存在一些安全隐患建议使用//注释

  • 标示符:

开头字母,后面跟字母、数字、下划线,不能使用保留字

  • 数字:

只有一个数字类型。在内部表示为64位浮点数。没有分理出整型,so 1和1.0的值是相同的

指数的表示100表示为1e2

NaN是一个数值,表示一个不能产生正常结果的运算,可以用函数isNaN(number)来检测NaN

数字拥有方法。javascript有一个对象Math,它包含一套作用于数字的方法。

例如:Math.floor(number)把一个数字转换成整数

  • 字符串:
javascript中所有的字符都是16位的,被包含在一对“”或‘’之间,可能包括0个或多个字符。
\代表转义字符,它允许正常情况下不被允许的字符集插入到字符串
例如:\u约定用来指定数字字符编码“A” === “\u0041”  \b backspace \n newline
有length属性“seven”.length 是5
可以用+运算符连接字符串,来创建新字符串
字符串也有方法例如:‘cat’.toUpperCase() === 'CAT'
  • 语句
var 语句被用在函数内部时,它定义的是函数的私有变量
switch,while,for,do允许有一个可选的前置标签(label)它配合break使用
语句通常按照从上到下的顺序执行,javascript可以通过条件语句(if 和switch)、循环语句(while,for,do)、强制跳转语句(break、return、throw)和函数调用来改变执行顺序
代码块是包含在{}中的一组语句,javascript的代码块不会新建作用域,因此变量应该定义在 函数的头部下面的值被当做假:
false
null
undefined
‘’
0
NaN
其他都是真,包括true、‘false’,以及所有的对象
for语句有两种形式
第一种由三个可选从句控制:初始化从句(initialization)、条件从句(condition)、增量从句(increment)
执行顺序:首先执行condition,他的作用通常是初始化循环变量,接着计算condition的值,如果condition被省略掉,则假定返回的是真。如果condition为假终止循环。否则,执行代码,然后执行increment,接着重复执行condition
另一种形式(for in)会枚举一个对象的所有属性名(或键名)。在每次循环中,object的下一个属性名字符串被赋值给variable。
通常要检测object.hasOwnProperty(variable)来确定属性名是该对象的成员,还是来自于原型链
try、catch、throw
try语句执行一个代码块,并捕获该代码块抛出的任何异常。catch从句定义一个新的variable来接收抛出的异常对象。
throw语句抛出一个异常,如果throw语句在一个try代码块中,那么控制流会跳转到catch从句中。
如果throw语句在函数中,则该函数调用被放弃,控制流跳转到调用该函数的try语句的catch从句
 
throw语句中的表达式通常是一个对象字面量,他包含一个name属性和一个message属性。异常捕获器可以根据这些信息决定该做什么。
  • 表达式
最简单表达式是字面量(字符串、数字等)、
变量
内置的值
new开头的表达式
delete开头的属性提取表达式
包在圆括号中的表达式
前置运算符+表达式
表达式后面+
  •   一个中置预算符与另一个表达式
  •   ?表达式1:表达式2
  •  函数调用
  •   属性提取表达式
运算符的优先级
. [] ()
delete new typeof + - !
* / %
+ -
>= <= > <
=== !==
&&
||
?:
对运算符的解释:
typeof运算符产生的值包括:‘number’、‘string’、‘boolean’、‘undefined’、‘function’、‘object’
&&如果第一个运算符的值为假,产生第一个运算符的值,否则产生第二个运算符的值
||如果第一个运算符的值为真,产生第一个运算符的值,否则产生第二个运算符的值
函数的调用运算符是跟随在函数名后面的括号
()或(expression, expression,……
属性提取
.name或[ expression]
  • 字面量
对象字面量
    是一种可以方便的按指定规格创建新对象的表示法。
    属性名可以是标识符或字符串。这些名字被当做字面量名而不是函数名对待,所以对象的属性名在编译的时候才能知道。属性的值就是表达式。 数字 字面量     是一种可以方便的按指定规格创建新数组的表示法。
函数字面量
    函数字面量定义了函数的值。
    它可以有一个可选的名字,用于递归调用自己。可以指定一个参数列表,这些参数就像变量一样在调用时由实际参数初始化,函数体包括变量定义的语句
 
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值