教你如何一步步迷上JS.. ╮(╯▽╰)╭

好嘀~只是一些总结

JS中的那些萌点

  • <script>标签中,合理使用defer="defer"(延迟执行),async="async"(异步执行)
  • 外部JS可以使用其它扩展名(如.php),但必须返回正确MINE类型
  • 使用var obj = preferredObj || backupObj; 提供后备值
  • 函数中使用arguements[]获取参数
  • 无函数签名,再见吧重载
  • 函数无引用传参,只要不作死用全局变量,封装就很完美
  • 神奇的垃圾收集功能,开发时无需考虑手动释放内存
  • 函数传参使用function hh({})直接传包含参数的对象,更加灵活
  • 数组每一个位置可以存不同类型的数据
  • 数组支持模拟栈操作,如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
Last modification:July 11th, 2019 at 02:14 pm
If you think my article is useful to you, please feel free to appreciate