You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
3.1 KiB

4 years ago
---
title: JS中那些惊艳的操作
date: 2019-03-19
categories:
- tech
tags:
- nodeJS
---
教你如何一步步迷上JS.. ╮(╯▽╰)╭
<!--more-->
好嘀~只是一些总结
## JS中的那些萌点
- <script>标签中,合理使用``defer="defer"``(延迟执行),``async="async"``(异步执行)
- 外部JS可以使用其它扩展名(如.php),但必须返回正确MINE类型
- 使用``var obj = preferredObj || backupObj;`` 提供后备值 ::aru:surprised::
- 函数中使用``arguements[]``获取参数
- 无函数签名,再见吧重载 ::aru:meditation::
- 函数无引用传参,只要不作死用全局变量,封装就很完美
- 神奇的垃圾收集功能,开发时无需考虑手动释放内存
- 函数传参使用``function hh({})``直接传包含参数的对象,更加灵活
- 数组每一个位置可以存不同类型的数据 ::aru:blood2::
- 数组支持模拟栈操作,如``push()``和``pop()``
- 数组支持模拟队列操作,如``push()``和``shift()``
- 数组支持从相反方向模拟队列,如``unshift()``和``pop()``
- ``sort()``可自定义比较函数为参数
- 数组``splice()``可太好用了吧
- 函数是对象,函数名是指针
- 可以像传递参数一样把一个函数传给另一个函数,也可以将一个函数作为另一个函数的结果返回
- 函数中可通过``arguments.callee``获取当前函数名指针
- 使用``arguments.callee.caller``获取调用当前函数的引用
- 使用``function.apply(this/*作用域*/, arguments)``或``function.call(this, arg1, arg2...)``指定作用域运行函数
- 使用函数固有属性``function.length``获取其期待的参数个数
- 通过函数继承属性``toLocaleString()````toString()````valueOf()``返回代码,方便调试
- 使用``indexOf()````lastIndexOf()``查找元素出现位置
- ``trim()``删除字符串开头结尾空格
- 支持正则``RegExp``
- 神奇但可怕的``eval("")``可将字符串转译成代码并就地执行
- ``encodeURI()/decodeURI()``与``encodeURIComponent()/decodeURICompoent()``处理uri
- 立即调用函数``function(){}();``
- 内置Math对象
- Math中``ceil()````floor()````round()``向上,向下,标准舍入
- ``Math.random()``大于零小于一随机数
- 对象中使用``functionName: function(){}``直接定义函数
- ES6中``(x)=>x+1``等价于``function(x){return x+1;}``
- 使用``;(function(name, context, definition){moudle.exports = definition();})('funationName', this, function(){});``封装模块
## 小心得
- 不建议使用``with``语句
- ``label``标签少用
- ``0.1 + 0.2 != 0.3`` 浮点型天坑,与C类似
- ``~26 == -27`` 利用按位非提高效率
- 标识符查询由内部环境向外部环境进行
- 没有块级作用域,与C++不同
- ``var obj2 = obj1;``实际是引用
- 函数传参时传对象,实际传的是指针
- 全局变量用完及时置为null以提性能
- 使用变量属性访问对象只能使用``obj[var]``
- ``var sum = function sum(){};``在Safari中会报错
- 不能为基本类型值添加属性和方法
- ``new Number("25")``返回对象,而``Number("25")``返回25
- 布尔表达式中对象均为true