blog icon indicating copy to clipboard operation
blog copied to clipboard

点滴记录(javascript)

Open jindada opened this issue 8 years ago • 4 comments

1 . token 是 词法单元的意思

我们经常在看到js的报错信息

ERROR in ./demo.js
Module build failed: SyntaxError: Unexpected token (x:y)

token 就是 词法单元的意思 将代码分解成有意义的代码块,这些代码块成为 词法单元 (token)

var a = 1;  // 分解成 "var","a","=","1",";"

2 . JS常见异常类型

我们一般都是抛出一个自定义的异常,那JS本身常见的异常类型有哪些那?

  • EvalError: raised when an error occurs executing code in eval()
  • RangeError: raised when a numeric variable or parameter is outside of its valid range
  • ReferenceError: raised when de-referencing an invalid reference
  • SyntaxError: raised when a syntax error occurs while parsing code in eval()
  • TypeError: raised when a variable or parameter is not a valid type
  • URIError: raised when encodeURI() or decodeURI() are passed invalid parameters

3 . 阻止冒泡及默认行为

e.preventDefault(); e.stopPropagation();

4 . javascript语言是传值调用

image

5 . 逻辑运算返回的不是 true | false

var a, b = 1, 2;
a && b // 2

逻辑就是测试 真 或 假,真假不是字面量true 或 false js本身帮你进行了转换,空字串、undefined 0 null false 这5个返回false,其他的都是true

jindada avatar Jun 09 '17 01:06 jindada

6 . 取整

~~3.125522 // 3
0|3.125522 // 3
parseInt(3.125522) // 3
Math.floor(3.125522)

~~0.0000000003 // 0
parseInt(0.0000000003) // 3
Math.floor(0.0000000003) // 0

因为 0.0000000003 会使用科学计数法表示为 3e-10,parseInt 会首先把参数转换为字符串,然后解析整数,直到遇到不是数字的值。

parseInt('2017-05-02') // 2017
parseInt('-0') // -0
parseInt(-0) // 0

特殊情况,如果你的返回值是整数(int32),那么可以使用位运算。使用位运算就不需要再去考虑那些非常规的值 NaN、undefined、null 等,这些值都是 0。0也只有唯一的值,不存在 +0 和 -0。

jindada avatar Nov 27 '17 08:11 jindada

7 . 解构在数组上面的应用

const {0:a, 2:b, length:l} = ['foo', 'bar', 'baz']
a // 'foo'
b // 'baz'
l // 3
const { length: l, [l-1]: last } = ['foo', 'bar', 'baz']
l // 3
last // 'baz'
const { ...obj } = [1,2,3]
obj // {0: 1, 1: 2, 2: 3}

jindada avatar Nov 27 '17 08:11 jindada

8. 运算符优先级

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

jindada avatar Nov 28 '17 07:11 jindada

9. 一行代码实现数组求和

var a = [1, 2, 3, 4, 5];
a.reduce((a, b) => a + b)

jindada avatar Jan 23 '18 05:01 jindada