急着要开发智能合约, 需要马上入门JS
找到阮一峰老师的学习笔记, 该教程精简,突出重点
我以一遍看一遍写Markdown的方式进行,
将主要框架和知识点进行记录, 有些细节选择性忽略
基本语法
- 变量提升,首先读取变量
- 识别大小写
- –>在开头被当成注释
- js的变量不区分作用域,可能是因为他不直接编译吧
- if和switch是条件语句
- if的
=
和==
和===
分别是赋值
和判断相等
和判断是否严格相等
- switch语法,
case:
+break;
使用
- if的
三元表达式
? :
,可以理解为if…else1
var 变量=(条件)? 为true的表达式:为false的表达式
while循环
do…while循环
1
2
3do
语句
while (条件)for(初始表达式;条件;递增表达式)
- break跳出代码块或者循环
- continue跳出当前循环
数据类型
概述
- ES6的6种数据类型
- 数值(number): 整数和小数
- 字符串(string): 文本
- 布尔值(bool)
- undefined: 未定义
- null:空值
- 对象(object): 各类值的集合,理解为go中结构体的对象
- 狭义对象(object)
- 数组(array)
- 函数(function)->数据类型
tips: var a = 函数
- type of 运算符,返回数据类型
辨析
null
和undefined
,语法效果相同,都表示没有- if(!undefined)和if(!null),;条件成立, 此时
undefined
和null
表示false
- null表示
空
和没有
,undefined表示没定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17// 变量声明了,但没有赋值
var i;
i // undefined
// 调用函数时,应该提供的参数没有提供,该参数等于 undefined
function f(x) {
return x;
}
f() // undefined
// 对象没有赋值的属性
var o = new Object();
o.p // undefined
// 函数没有返回值时,默认返回 undefined
function f() {}
f() // undefined
- if(!undefined)和if(!null),;条件成立, 此时
Bool六个被转为
False
的值- 整形和浮点型
- 内部以64浮点型储存,1===1.0
- 浮点型天生不精确,
0.1+0.2===0.3
为false - 精度有限
1
2
3
4// 正向溢出
Math.pow(2,1024)// 返回Infinity
//负向溢出
Math.pow(2,-1075) // 返回0
数值表书法
- 十进制和十六进制表示法,字面表示法
- 科学技术的两种情况
- 小数点前的数字多余21位
- 小数点后的0多于5个
1
2
3
4
5
6
7
8
9
10
111234567890123456789012
// 1.2345678901234568e+21
123456789012345678901
// 123456789012345680000
// 小数点后紧跟5个以上的零,
// 就自动转为科学计数法
0.0000003 // 3e-7
// 否则,就保持原来的字面形式
0.000003 // 0.000003
进制和特殊数值
1 | 0xff // 255 十六进制 |
两个0
- 所有场景
+0
==-0
一个例外, 做分母
1
(1/+0)===(1/-0) //false
有
+Infinity
和-Infinity
之分
- 所有场景
- NaN ->特殊值 “非数字”,主要出现在字符转成数字的场合
- 不等于任何值,包括自己
- Infinity, 超过js的表示范围就会返回Infinity
数值相关的全局方法
- parseInt(,) 的作用
- parseFloat()的作用
- isNaN()
- isFinite() 的作用
字符串
概述
- 统一用
单引号表示字符串,双引号也可以
- (\ )表示转义
- 字符串和数组
字符集