日子天天过,啥都能忘,学习不能忘。《JavaScript高级程序设计》这本书之前看过,但是只看了js的部分,其余部分并没有看。当时想,看看js部分应该够用了,但最近看了篇文章,受到了很深的打击,遂决定从头到尾把高设完整的在看一遍。

基本概念篇是高设第三章的内容,之所以在该章开始,主要是因为前两章的内容看不看都差不多。既然说是基本概念,讲的当然是JavaScript的基础内容了。内容主要包括语法、数据类型、操作符、流控制语句、函数几部分。

语法

JavaScript是一门区分大小写的语言,例如一个变量名num 和 Num,虽然它们是一个单词,但因为第二个Num的首字母是大写的,因此JavaScript认为它们两个是完全不同的变量,不过在正式编程中不建议使用单词相同,大小写不同的单词来作为两个意义不同的变量,这样程序写的过多的时候,很容易混淆。

标识符是个统称,它表示变量、函数、属性的名或者函数的参数。通常对标识符进行起名字时,是需要遵循一定规则的。基本上有两种规则:1、不能以数字开头,可以是字母、下划线或者美元符号2、其它字符可以是数组、字母、下划线、美元符号。当然,标识符的名称也可以包含Unicode或者ASCII的字母字符,但通常是不建议这样做的。标识符的名称书写格式也有一定的规范,虽然不是强硬的,但一般都遵循此规范,那就是驼峰命名,即名称的一个单词都小写,其余单词首字母大写。例:firstChild。

注释的话,基本没甚可讲的,就是//、/**/两种注释方式。

严格模式,是ESMA5中出现的,他为JavaScript定义了一种不同的解析方式,一般是在文件的头部声明,关键字为“use strict”。看上去像字符串,但其实是一个编译指示。所谓严格,就是说对于一些不安全的操作将会抛出异常而不确定的行为也会得到处理。ES6出现后,必须声明为严格模式,才能正常编程,如果用新语法的话,可要注意了。

语句的话也很简单,通常一条语句的话以分号结尾,如果多条语句以逗号分隔的话,js视为一条语句。语句的分号如果省略不写,则解析器会自动确定语句的结尾。虽然可以不写分号,但从长远来看,还是不要省略的好。

关键字和保留字是js语言已经征用,写代码时,不能用来起名字的一组单词。其中关键字包含: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。保留字就不写了,想了解的话可以去看书。

变量在编程中是用来存储数据的,它是松散类型的,用var声明,在ES6语法中,用const和let取代了var。const俗称常量,及不可变的量,其值一旦定义,便不可再改变。let则和const相反,它的值是可以随时改变的,和var不同的是,它没有了var声明提前的特点。所谓声明提前,就是指你的变量无论定义在何处,都相当于在顶部声明,所以你在变量声明前使用该变量,也不会报错。

数据类型

JavaScript一共拥有六种数据类型,其中五种基本数据类型:Undefined、NULL、Number、String、Boolean,一种复杂数据类型:Object。javaScript不支持自定义数据类型,当然就凭JavaScript的动态性,完全是没有必要去自定义数据类型,六种数据类型很够用了。

typeof操作符是用来检测变量数据类型的,它会以字符串的方式返回变量的数据类型。例如Number数据类型的变量就会返回"number",当然typeof也有发神经的时候,比如NULL数据类型,typeof返回”object“,因为NULL被认为是空对象引用。

Undefined数据类型只有一个值,就是undefined,通常作为声明但没有赋值的变量的值,当然可以为变量显示声明undefined,但这是完全没有必要的。对于未定义的变量,如果检测数据类型的话,也会返回undefined,因此声明的时候就赋值,是一个明智的做法,这样就可以成功的检测变量是不是未定义的。虽然未定义的变量,类型检测也返回undefined,但他与声明过为赋值的变量不同,它只能进行检测数据类型这一种操作,进行其它操作会产生错误。

Null数据类型也只有一个值null,用来表示空对象指针,而这也是它用typeof检测时返回''object"的原因。null和undefined比较的时候,用==的话,因为会自动转换,所以会返回true。但是它们完全是两个不同的东西,这点需要注意。

Boolean数据类型有两个值,ture和false。在判断中0和1会产生与Boolean类型一样的作用,都可以判断真假,但是Boolean的true和false却和1和0不是一回事,也就是说true不一定等于1,false也不一定等于0.使用Boolean()可以对其它的数据类型进行显示的Boolean转换。

Number数据类型指的是数字。在js中,采用IEEE754来表示整数和浮点数。字面量格式有十进制、八进制、十六进制。八进制的字面量以0开头,例070,065。十六进制以0x开头,例0xffff,0x1a。再严格模式下八进制字面量是无效的,会导致错误。在进行计算的时候,八进制和十六进制都会转换成十进制。浮点数就是常见的小数,它所占的内存空间是整数的两倍,所以js会捉住一切机会,把它转换成整数。而且浮点数的算数运算精度也不如整数,例如0.1+0.2的值不是0.3,而是0.30000000000000004,因此尽量不要用浮点数做高精度的运算。js的数值的表示是有范围的,一旦超过该范围,就会返回infinity,当得到此值的时候,将无法继续运算。js中有一个isFinite()函数,可以用来判断数值是不是已经超过范围,未超过的话返回true,超过的话返回false。NaN是一个特殊的数值,含义为非数字,用来表示不能正常返回数值的情况,例如0除以0会返回NaN。NaN和谁都是不相等的,包括自己。js中,用isNaN()函数来检测值是不是NaN。是NaN的话为true,不是为false。数值转换的方法,Number要比Boolean要多,有Number()、parseInt()和parseFloat()。Number()可以把任何类型转换为数值,其参数如果是undefined、或者字符串中包含非数字字符皆返回NaN。parseInt()和parseFloat()只能转换字符串数值。

String数据类型是有多个字符组成的,可以用单引号也可以用 双引号表示。它是不可变的,也就是说,一旦声明,就不会发生变化,变量每次赋值,都会销毁老值,然后用新字符串进行填充。其它类型转换为字符串的话可以调用toString()方法,null和undefined例外,不过null和undefined可以通过String()函数转换为字符串类型。

操作符

一元操作符包含++、--、+、-。++、--操作符可以前置,也可以后置。前置的话会先进行计算,再返回值。后置的话,单个运算的话和前置++没有区别,但是还包含其它运算的话,区别就会显现出来,后置++会把值返回后,在进行计算。+、-操作符,含义和数学含义相同,表示正数和负数。

布尔操作符包含!、&&和||,主要用于判断中。!会对操作的数据类型,进行求反操作,也就是说操作类型为ture,用了!结果就会变为false。&&中文意思并且,表示两件事都是真的时候,结果为真,一旦有一个为假,则结果为假。如果一上来第一件事情就为假,则不在对第二件事情的真假进行验证。||中文意思或者,表示一旦有一方为真,则结果为真,除非都是假,结果才为假。||始终返回最右侧点的值。

乘性操作符包含*、/、%。*就是数学计算中的乘法。/就是数学计算中的除法。%会在计算中进行求余计算,并返回余数。

加性操作符包含+、-。+的话有点复杂,因为它不仅会执行正常的+发运算,还会执行字符串拼接。也就是说如果两边值是字符串的话,它不会执行+法运算,而是执行字符串拼接。如果有一方是字符串的话,仍然执行拼接运算。-的话,则就执行常规的-法运算。

关系操作符包含>、<、>=、<=.主要用于比较操作,结果为Boolean类型。如果是数值进行比较的话,正常比较大小。如果是字符串的话,则比较的是字符串对应的字符编码的大小。

相等操作符包含==、!=、===、!==。==、!=执行操作的时候会执行类型转换,而===、!==则不会。因此建议使用===、!==。

条件操作符格式为?:。前边为条件,中间和最右侧为要执行条件。执行时,会根据前边条件的结果,决定执行中间部分还是右侧部分。

赋值操作符用于把右侧的值赋给变量,用=号表示。

逗号操作符可以使多条语句变为一条语句执行,例let _a = 3,c=4;

流控制语句

 if语句表示如果条件满足,则执行if块里边的语句,不满足则执行else块里边的语句。

do-while语句是后测试循环语句,就是不管条件满不满足,都会执行一次块里的语句,之后在通过条件判断是否还执行。例do{}while(i!=3);

while语句是前测试循环语句,就是说语句块的语句,必须在条件满足的情况下,才会连续执行。

for语句也是前测试循环语句,但它拥有初始化变量,和定义循环后要执行的代码的能力。

for-in语句是迭代语句,用来迭代对象的可枚举属性

label语句一般编程中也不会用到,使用它可以在代码中添加标签。

break和continue语句都有跳出的意思break表示立即跳出循环,执行后边的语句。continue则表示跳出当前这次循环,进行下次循环

with语句是已经被抛弃的语句,所以不在阐述。

switch语句和if语句类似都是条件语句,与if不同的是,起条件的结果不一定是Boolean数据类型,也可以是其它数据类型。

for of语句是ES6中出现的语句,也是循环语句,可以循环任何数据类型,只要它实现了iterator接口,是目前为止,js中最强大的循环语句。虽然知道,但我具体没有用过。

转载于:https://www.cnblogs.com/wangyinqian/p/7705428.html

JavaScript高级程序设计之基本概念篇相关推荐

  1. javascript高级程序设计之基本概念

    1.语法 1.1 区分大小写 变量.函数名和操作符都区分大小写 1.2 标识符 标识符是指变量.函数.属性的名字,或者函数的参数.标识符可以是按照下列格式规则组合起来的一或多个字符 第一个字符必须是一 ...

  2. 读javascript高级程序设计-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/> 本笔记是为了方便日后查阅,仅作学习交 ...

  3. 《JavaScript高级程序设计》红宝书第一遍阅读(了解概念)

    <JavaScript高级程序设计>红宝书第一遍阅读(了解概念) 第1章--什么是JavaScript 第2章--HTML中的JavaScript 第3章--语言基础 第4章--变量.作用 ...

  4. 回顾《JavaScript高级程序设计》目录篇

    <JavaScript高级程序设计>看这一份够了,前提是等我更完... 回顾<JavaScript高级程序设计>目录篇 精简<JavaScript高级程序设计>四 ...

  5. 《javascript高级程序设计》笔记:内存与执行环境

    上一篇:<javascript高级程序设计>笔记:继承 近几篇博客都会围绕着图中的知识点展开 由于javascript是一门具有自动垃圾收集机制的编程语言,开发者不必担心内存的分配和回收的 ...

  6. 《javascript高级程序设计》笔记:原型图解

    文章直接从原型图解开始的,如果对一些概念不太清除,可以结合后面几节查看 1. 图解原型链 1.1 "铁三角关系"(重点) function Person() {}; var p = ...

  7. javascript 高级程序设计_重读《JavaScript高级程序设计》

    最近自己在休假,打算闭门几天将<JavaScript高级程序设计>(第3版)这本良心教材再回顾一遍.目前自己进入前端领域两年多,现在重读并记录下这本教材的"硬"知识点 ...

  8. javascript 高级程序设计_所以 JavaScript 到底是什么?我居然懵了????

    前言 引用<JavaScript 高级程序设计第四版>中说的话 --"从简单的输入验证脚本到强大的编程语言,JavaScript 的崛起没有任何人预测到.它很简单,学会用只要几分 ...

  9. JavaScript高级程序设计(读书笔记)(六)

    本笔记汇总了作者认为"JavaScript高级程序设计"这本书的前七章知识重点,仅供参考. 第六章 面向对象的程序设计 面向对象(Object-Oriented, OO)的语言有一 ...

最新文章

  1. C# ListT泛型用法
  2. 比特币现金网络会看到什么样的代币?
  3. select选择框变得可以输入、编辑
  4. 1048:有一门课不及格的学生
  5. Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据
  6. 13结构型模式之桥接模式
  7. php scsi平台,三大SCSI Target平台PK:让服务器化身SAN
  8. 黑马程序员-代理类的作用与原理及AOP
  9. 域名转让代码_互联网域名转让协议(中英)
  10. php7 fastdfs,关于centos7 fastdfs部署
  11. matlab指数形式复数运算,[转载]MATLAB学习(4)——复数及其运算
  12. AppServer 灰度集群接口超时 / CPU 负载高专项问题排查
  13. 福建土楼ppt计算机二级,福建土楼PPT.ppt
  14. android连连看源代码,#经典连连看#源码分享
  15. PLDA宣布XpressLINK-SOC™ CXL控制器IP支持AMBA CXS Issue B协议
  16. hql 字符串where语句_常用的HQL语句
  17. 微信二维码转换成链接
  18. 云原生安全,这也是一道必答题
  19. 计算机一级无法打开office,电脑中无法运行Office2016的两种解决方法
  20. 三角矩阵的存储和获取(C++版)

热门文章

  1. 【机器视觉】 deserialize_measure算子
  2. 【物联网】OpenWrt编译和修改基础--预科
  3. python 自动控制仿真_Python自动控制鼠标操作pymouse,python
  4. 1015 德才论 (25 分)(c语言)
  5. mybatis里的日志实现顺序
  6. 使用 ApplicationLoader 上传应用到 Appstore
  7. PHP处理Checkbox复选框表单提交
  8. Pixhawk代码分析-姿态解算篇D
  9. 量子计算入门-第一部分
  10. pixhawk自学笔记之uorb学习总结