初识JavaScript(一)
初识JavaScript(一)
最近由于工作的需要的原因,我从一个写后台的现在让我转到写前端,再加上我的js部分特别的差,所以我现在开始学习js部分的知识。
我的第一篇博文就这样开始写了。俗话说,千里之行,始于足下。九层高台,始于垒土。我要努力跟上博客园的各位大神的脚步。
1.初识JavaScript的词法结构
在编程语言中词法机构是一套基础性规则,用来描述如何使用这门语言编写程序。在本小节中,咱们要认识到JavaScript的字符集、怎样区分大小写、空格、换行符和格式控制符、Unicode转义序列、标准化、注释等等词性结构。
1.1 字符集
JavaScript的程序使用Unicode字符集编写的,那什么是Unicode呢?Unicode是ASCII和Latin-1的超集,它支持地球上几乎所有在用的语言。
1.2 区分大小写
JavaScript是区分大小写的语言。也就是说,关键字、变量、函数名、和所有标识符(identifier)都必须采取一致的大小写的形式。
举个栗子:关键字"while"必须写成"while"而不能写成"While"或者"WHILE"。同样"online"、"Online"、"OnLine"、"ONLINE"是4个不同的变量名
注意:1.HTML并不区分大小写;
2.XHTML区分大小写
举个栗子:在HTML标签中,这些标签的属性名可以使用大写也可以使用小写,但是由于HTML的标签和属性名与JavaScript中的标签和属性名同名,这个时候JavaScript中则必须小写。比如在HTML中设置时间处理程序onclick属性可以写成onClick,但是在JavaScript(XHTML文档)代码中,必须使用小写的onclick。
1.3 空格、换行符和格式控制符
JavaScript会忽略程序中标识之间的空格。多数情况下,JavaScript同样会忽略换行符。由于可以在代码中随意使用空格和换行,因此采用整齐、一致的缩进来形成统一的编码风格,从而提高代码的可读性和整齐性。
| 中文名称 | 符号 |
| 空格符 | \u0020 |
| 水平制表符 | \u0009 |
| 垂直制表符 | \u000B |
| 换页符 | \u000C |
| 字节序标记 | \uFEFF |
| 换行符 | \u000A |
| 回车符 | \u000D |
| 行分隔符 | \u2028 |
| 段分隔符 | \u2029 |
| 不中断空白符 | \u00A0 |
| 从右至左书写标记 | \u200F |
| 从左至右书写标记 | \u200E |
| 零宽连接符 | \u200D |
| 零宽非连接符 | \uFEFF |
| ... | ... |
1.4 Unicode转义序列
使用6个ASCII字符来代替任意16位Unicode内码,这种序列就叫做Unicode转义序列。
举个栗子: "café" === "caf\u00e9" //结果是:true
1.5 标准化
Unicode标准为所有字符定义了一个首选的编码格式,并给出了一个标准化的处理方式将文本转换为一种合适比较的标准格式,JavaScript会认为它正在解析的程序化代码已经是这种标准格式,不会再对其标识符、字符串、或正则表达式做标准化处理。
1.6 注释
//:单行注释
/**/:多汗注释
1.7 直接量
所谓的直接量就是程序中直接使用的数据值。
举个栗子:
| 直接量 | 注释 |
| 12 | 数字 |
| 1.2 | 小数 |
| "hello world" | 字符串文本 |
| 'Hi' | 另一个字符串 |
| true | 布尔值 |
| false | 另一个布尔值 |
| /javascript/gi | 正则表达式直接量(用作模式匹配) |
| null | 空 |
| {x:1,y:2} | 对象 |
| [1,2,3,4] | 数组 |
1.8 标识符
标识符就是一个名字。在JavaScript中,用来对变量和函数命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。
标识符命名规则:
1.必须以字符、下划线(_)、美元($)为首字母,后续的字符可以是字母、数字、下划线或美元符;
2.数字是不被允许作为首字符出现,以便JavaScript可以轻易的分开标识符和数字;
3.出于可移植性和易于书写性的考虑,通常我们只使用ASCII字母和数字来书写标识符;
4.JavaScript允许标识符中出现Unicode字符全集中的字母和数字。
合法的标识符:i、my_variable_name、v13、_dummy、$str等等
1.9 关键字(保留字)
JavaScript主要的关键字:break、do、instanceof、typeof、case、else、new、var、catch、finally、return、void、continue、for、switch、while、debugger*、function、this、with、default、if、throw、delete、in、try
2.0 可选的分号
JavaScript使用分号(;)将语句分开。这对增强代码的可读性和整洁性是非常重要的;缺少分隔符,一条语句结束就成了下一条语句的开始,反之亦然。
注意:1.JavaScript并不是在所有换行处都填补分号;只有在缺少了分号就无法正确解析代码的时候,JavaScript才会补填分号;
2.在return、continue和break和随后的表达式之间不能有换行。如果添加换行,程序则只有在极特殊的情况下才会报错,而且调试起来非常麻烦。
3.在涉及"++"和"--"运算符的时候。这些运算符可以作为表达式的前缀,也可以当做表达式的后缀。如果将其用做后缀表达式,它和表达式应当在同一行。否则,行尾将填补分号,同时"++"或"--"将会作为下一行代码的前缀操作符并与之一起解析。
2.小结
我是通过此次学习,才知道在js在词法有那么多规则,而且每种规则都是我在进行编写JavaScript程序的要求。
这是我第一次发这样的博文,有什么不对的地方请及时在下面留言,并帮助我进行更正。谢谢了!!!
初识JavaScript(一)的更多相关文章
- 笔记一、初识 Javascript
一.初识 Javascript javascript是一种专为与网页交互儿设计的脚本语言.由三部分组成:ECMAScript (ECMA-262定义) : 提供核心语言功能文档对象模型(DOM): ...
- Day15 HTML补充、初识JavaScript
一.上节回顾 上节回顾: HTML 头部信息:编码.title.style.link(导入css文件) 身体: 内联 块级 --->inline-block(既有内联效果又有块级效果) a标签: ...
- 《前端之路》之 初识 JavaScript
01 初识 JavaScript 作为在码农圈混迹了 四五年的老码畜来说,学习一门新的语言,就仿佛是老司机开新车一样 轻车熟路. 为什么会这么快呢? 因为各种套路啊- 任何一种计算机语言的最开始都是和 ...
- 01初识 JavaScript
1.初识 JavaScript 1.1 JavaScript 是什么 l JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思) l 脚本语言 ...
- 初识JavaScript(三)
初识JavaScript(三) 我从上一讲<初识JavaScript(二)>了解到了类型.值.变量的定义以及特点,本节我将学习到JavaScript中的算术运算.二进制浮点数和四舍五入的错 ...
- 初识JavaScript(二)
初识JavaScript(二) 我从上一篇<初识JavaScript(一)>知道和认识JavaScript的词法结构,也开始慢慢接触到了JavaScript的使用方法,是必须按照JavaS ...
- 初识JavaScript闭包
一个问题引发的思考 在我学习javascript的事件时,有一个小任务是使用JS来实现 li 列表项在鼠标悬浮时会有背景阴影的动态效果,很自然想到用for 来为每个列表项添加onmouseover 和 ...
- 初识JavaScript
JavaScript ECMA-262: 变量,函数,对象,数据类型....唯独没有输入和输出. Javascript:包含 ECMA-262,核心 BOM 浏览器对象模型, DOM 文档对象模型 什 ...
- 初识JavaScript 变量, 操作符, 数组
这里讲的不会太多, 因为所有的语言都是一样的, 一些基本的东西, 所以就随便写写. 变量 变量就是可变的量, 编程角度理解就是用于存储某种/某些数值的存储器. 我们可以把变量具象理解为一个盒子, 而我 ...
随机推荐
- 基于Emgu CV+百度人脸识别,实现视频动态 人脸抓取与识别
背景 目前AI 处于风口浪尖,作为 公司的CTO,也作为自己的技术专研,开始了AI之旅,在朋友圈中也咨询 一些大牛对于AI 机器学习框架的看法,目前自己的研究方向主要开源的 AI 库,如:Emgu C ...
- PHP开发b2c商城价格
电商的快速发展不断地挤压传统企业的生存空间,渠道越来越窄,所以现在很多企业开始往线上发展,搭建自己的B2C商城,直接面向消费者进行销售.那开发b2c商城价格怎么样?很多企业都是比较关心到商城价格这个问 ...
- 实现一个websocket常驻进程服务
由于工作的原因,近期调查了一下mac系统下常驻服务的接收websocket信息和创建进程的方法原理.将具体实现细节记录下来备忘. (一).准备工作 1.安装brew,在终端中输入: ruby -e & ...
- Linux 开启echo等服务
第一步: 需要安装xinetd服务(其实daytime就包含在xinetd服务中),安装就直接在"新立得软件管理器"里搜索,安装. sudo apt-get install xin ...
- TensorBoard 使用和问题解决
TensorBoard 使用和问题解决 一.启动TensorBoard 1) python tensorflow/tensorboard/tensorboard.py --logdir=path/to ...
- java线程池的创建使用
利用java的多线程编程可以大大的提高系统的并发运行效率,线程越多并发执行的任务就越多,但是并不意味着效率会一直提高,相反会得到适得其反的效果. java中的多线程编程一共有三种方法: 继承Threa ...
- 机器学习实践之K-近邻算法实践学习
关于本文说明,本人原博客地址位于http://blog.csdn.net/qq_37608890,本文来自笔者于2017年12月04日 22:54:26所撰写内容(http://blog.csdn.n ...
- SQL多表关联查询
在创建关系型数据表时,根据数据库范式的要求,为了降低数据的冗余,提供数据维护的灵活性 将数据分成多个表进行存储,实际工作当中,需要多个表的信息,需要将多个表合并显示 --内连接 selec ...
- js----数组处理之splice(有js原始addClass方法哦)
上次写了一个轮播的方法:http://blog.csdn.net/stronglyh/article/details/46833499 由于别人问我的时候,给了我html.于是乎我就看到了页面中引用了 ...
- 设计模式 - 装饰者模式(Decorator Pattern) 具体解释
装饰者模式(Decorator Pattern) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/26707033 装饰者 ...