《JavaScript高级程序设计》学习笔记(1)

欢迎关注本人的微信公众号“前端小填填”,专注前端技术的基础和项目开发的学习。

首先,我将从《JavaScript高级程序设计》这本JavaScript学习者必看的经典教程开始,JavaScript的很多语法规则及习惯用法和Java极其相似,因此对于有Java基础的学习者来说,JS是很容易上手的。该系列的每次更新将对应原书的一章内容,本次更新对应原书的第三章,主要是一些基本概念,内容很简单, 知识点也较少。

1、和一般的编程语言一样,标识符可以由字母、数字、下划线和美元符组成,但是不能以数字开头。在JS中,标识符是区分大小写。当然,标识符不能是关键字和保留字。

2、JS中的注释和java一样,有三种注释,分别是单行注释(// 双斜线表示单行注释)、块级注释(/* 这里是块级注释 */)、文档注释(/** 这里是文档注释 */)。

3、严格模式:ECMAScript 5 引入了严格模式的概念, 是为JS定义的一种不同的解析与执行模型。严格模式在后续的学习中会被经常提及。要在整个脚本中启用严格模式,只需要在顶部添加如下代码即可,也可以在函数内部的第一行加上如下代码表示指定函数使用严格模式。

"use strict";

4、JS的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据。用关键字var来声明,不需要指定数据的具体类型。在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。

5、JS中有5种简单数据类型(也称基本数据类型)和1种复杂数据类型。简单数据类型分别是UndefinedNullBooleanNumberString,复杂数据类型是Object,Object本质是一组无序的名值对组成的。

  • Object类型:即对象,就是一组数据和功能的集合,可以通过new操作符来创建。和Java中的Object类一样,Object类型是所有对象类型的父类,即Object类型所具有的任何属性和方法也同样存在于更具体的对象中。
  • Undefined类型:只有一个值,即undefined,使用var声明变量,但是未对初始化的,这个变量就是Undefined类型的。注意:var i;与var i = undefined;这两句是等价的
  • Null类型:只有一个值:null。null表示一个空对象的指针
  • String类型:字符串。
  • Boolean类型:只有两个字面量true和false。但是js中所有的变量都可以使用Boolean()函数将其他数据类型转换成一个Boolean类型的值。 在转换过程中,Boolean类型的false、String类型的空串、Number类型的0和NaN、Undefined类型的undifined将转化为false,其他情况将转化为true。
  • Number类型:整数和浮点数。js中所有的变量都可以使用Number()函数将其他数据类型转换成一个Number类型的值。 Number()函数的转换规则:true--1,false--0,null--0,undefined--NaN,空字符串--0,其他字符串如果能转换为数字则返回对应的数字(可以识别十六进制),如果不能则返回NaN。NaN:Not a Number。这个数值用于本来要返回一个数值,但是却未能放回一个数值的情况,以防止报错。例如:1/0 返回的就是NaN。NaN的特点:1、任何涉及NaN的操作都会返回NaN。2、NaN对任何值都不相等,包括自己NaN本身。针对NaN特性,JS内置了isNaN()函数,来确定数值是不是NaN类型。 Infinity:正无穷 -Infinity:负无穷(就是在Infinity前加一个负号)

6、typeof操作符:对一个变量进行判断变量的类型,可能返回以下字符串:

  • "undefined" 如果这个值未定义或者未初始化
  • "boolean" 如果这个值是布尔值
  • "string" 如果这个值是字符串
  • "number" 如果这个值是数值
  • "object" 如果这个值是对象或null
  • "function" 如果这个值是函数 具体用法:typeof 95;  或者  typeof(95); 会返回"number"。

7、JS中的操作符:由于JS中的变量是松散类型的,所以在各种操作符之间存在前后两个操作数的类型不一样的情况,所以这一部分的内容比较复杂,也存在各种情况。在这里将简单介绍一下各种操作符。后续将专门写一篇文章来详细介绍这一部分。

  • 一元操作符:自增(++)、自减(--),可应用于整数和浮点数,对于其他类型,先转化为Number类型再进行相关操作,返回对应的数值或NaN、undefined。注意自增、自减操作符在变量的前后不同对赋值结果是有影响的。
  • 位操作符:位与(&)、位或(|)、按位非(~)、位异或(^)、左移(<<)、有符号右移(>>)、无符号右移(>>>)(高位以0填充)。
  • 逻辑运算符:非(!)、与(&&)、或(||)。
  • 关系运算符:大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)、全等(===)、不全等(!==)。若两个操作数均为字符串,则比较两个字符串对应的字符编码,一般是先转化为数值型,然后进行比较。

表达式

表达式

null == undefined

true

true == 1

true

null === undefined

false

true == 2

false

5 == NaN

false

undefined == 0

false

NaN == NaN

false

null == 0

false

"NaN" != NaN

true

"5" == 5

true

"NaN" == NaN

false

false == 0

true

  • 条件运算符:? : 。
  • 赋值运算符:=、+=、-=、*=、/=、%=、<<=、>>=、>>>=。
  • 逗号运算符:可用于声明多个变量,也可用于赋值。用于赋值时,逗号运算符总返回表达式中的最后一项。

8、JS中的各种语句和其他各种编程语言中的都是一样的。主要是顺序、选择和循环三类。

  • 顺序语句:with(expression) statement 将代码的作用于设置到一个特定的对象中,相当于一种简写形式。例如我们需要用到对象a的两个方法getName()和getAge()需要写代码为 var name = a.getName(); var age = a.getAge();   此时用with语句可以写成 with(a){    var name = getName();    var age = getAge(); }
  • 选择语句:if、if...else...、switch...case...。
  • 循环语句:do...while、while、for、for...in。 for...in:是一种精准的迭代语句,可以用来枚举对象的属性。 for(var propName in window){  document.write(propName); }
  • 其他语句:break、continue、label。 label:标签语句,可用于被break和continue引用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

窥探Swift之新添数据类型元组与可选值

  今天的博客中就总结一下关于Swift中相对Objc新添加的两个数据类型:元组(Tuple)和可选值类型(Optional)。上面这两个类型是Swift独有的...

1995
来自专栏二进制文集

30分钟玩转「正则表达式」

推荐阅读:Jeffrey Friedl 《精通正则表达式(第3版)》,本文是该书的读书笔记。

1142
来自专栏博客园

IL指令详细表

932
来自专栏有趣的Python

慕课网-Linux C语言结构体-学习笔记

Linux C语言结构体 编译指令:预处理,宏定义, 建立自己的数据类型:结构体,联合体,动态数据结构 逻辑运算符:& | ^ ~ << >> 递归函...

4618
来自专栏五分钟学算法

看完这个你还不会 插入排序 么

由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 -----《图解数据结构》,主要使用动画...

1043
来自专栏Flutter入门到实战

老司机用一篇博客带你快速熟悉Dart语法

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/3d927a7bf020

4182
来自专栏谈补锅

Swift学习笔记

  swift3.0中文翻译学习网站:http://www.swift51.com/swift3.0/

1335
来自专栏lulianqi

IL指令详细

1193
来自专栏超然的博客

ECMAScript 6 笔记(一)

       1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国...

1073
来自专栏老司机的技术博客

golang学习笔记4:基本类型和运算符

布尔型的值只可以是常量 true 或者 false。一个简单的例子: var b bool = true 。两个类型相同的值可以使用相等 == 或者不等 != ...

2653

扫码关注云+社区

领取腾讯云代金券