我认为JS还可以改进的点
曾经我一度在寻找JS的替代语言,尝试过CoffeeScript
/TypeScript
/Dart
(都是浅尝)。不为什么原因,而是当你写的越多的JS,越觉得JS很多时候显得很操蛋。好在ES2015
和Babel
出来了,也让我终止了寻找替代方案,安心的停留在了JavaScript
本身。
我并没有非常丰厚的多语言编程经验,但也有一丝想法,对于JavaScript
来说。
Array
增加first
和last
方法
let arr = [1, 2, 3];
arr.first(); //1
arr.last(); //3
当然用arr[0]
和arr[arr.length-1]
也能够实现相同的效果,不过方案显得不够优雅
[n...m]
快速生成从n
到m
的数字数组(可用于简洁的循环)
let arr = [0...9];
//等同于
let arr2 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
[0...9].map(n => console.log(n));
提供快速检测对象属性是否存在的方法Object.isSet
,这样就不必去做嵌套式的判断语句了,也不用担心抛出异常
let a = {};
if (Object.isSet(a.b.c.d)) {
//现在a.b.c.d能够安全的调用
}
//现在只能这样判断.d能否被安全调用
if (a && a.b && a.b.c && a.b.c.d) {
//现在a.b.c.d能够被安全的调用
}
Date
对象的toString
方法提供输出指定格式的日期时间字符串
let d = new Date();
d.toString('yyyy-MM-dd'); //2016-01-01
//hh 12小时制 HH 24小时制
d.toString('hh:mm:ss'); //09:21:12
d.toString('HH:mm:ss'); //21:21:12
Date
对象提供对年、月、日、分、秒的增减方法
let d = new Date();
//2016-01-01 09:20:20
d.years(1); //2017-01-01 09:20:20
d.years(-1); //2015-01-01 09:20:20
d.months(1); //2016-02-01 09:20:20
d.months(-1); //2015-12-01 09:20:20
d.days(1); //2016-01-02 09:20:20
d.days(-1); //2015-12-31 09:20:20
d.minutes(1); //2016-01-01 09:21:20
d.minutes(-1); //2016-01-01 09:19:20
d.seconds(1); //2016-01-01 09:20:21
d.seconds(-1); //2016-01-01 09:20:19
我认为JS还可以改进的点的更多相关文章
- ul+js模拟select+改进
html: <div class="select_box"> <input type="text" value="还款方式" ...
- 使用Node.js还可以发邮件
前言 今天,我们给大家开发一个小效果.篇幅比较短,主要给大家展示效果.实战 首先我们初始化一个Node项目 npm init -y 创建一个app.js文件 'use strict'; const n ...
- [ JS 进阶 ] 如何改进代码性能 (3)
原文链接 总结一下 1.减少操作dom的次数 2.需要多次使用某全局变量的时候,将其赋给一个局部变量,避免重复查找 3.优化循环 4.多用逗号和直接赋值的方式来var,减少工厂方式和构造函数方式创建对 ...
- JS做的类似腾讯专题图片播放器,大家可以一起来改进!
我是一个应届生,来公司不久,根据需求,网站需要一个专题图片轮播的页面.网上确实有很多现成的插件,但是,作为一个JS还不是很牛的应届生,我决定自己写一个! 话说忽然想到做个这个还真不容易,一时思绪理不清 ...
- Vue.js:轻量高效的前端组件化方案
转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014 ...
- js模块化历程
这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...
- js 模块化历程
作者:吕大豹 网址:http://www.cnblogs.com/lvdabao/p/js-modules-develop.html 这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生 ...
- Vue.js:轻量高效的前端组件化方案(转载)
摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...
- Ext JS 5的声明式事件监听
在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...
随机推荐
- Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...
- python自动化测试(2)-自动化基本技术原理
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...
- OpenCASCADE Shape Location
OpenCASCADE Shape Location eryar@163.com Abstract. The TopLoc package of OpenCASCADE gives resources ...
- IE8/9 JQuery.Ajax 上传文件无效
IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...
- java单向加密算法小结(1)--Base64算法
从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- [systemtap手记]debian体系安装过程
Debian体系,本人测试用机 Ubuntu 11.10 uname -r 查看原本的内核版本为 3.0.0-12-generic 第一步: 安装systemtap包 $ sudo apt-get i ...
- 微服务与Docker介绍
什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...
- SpringMVC+Shiro权限管理【转】
1.权限的简单描述 2.实例表结构及内容及POJO 3.Shiro-pom.xml 4.Shiro-web.xml 5.Shiro-MyShiro-权限认证,登录认证层 6.Shiro-applica ...
- Android—基于GifView显示gif动态图片
android中显示gif动态图片用到了开源框架GifView 1.拷GifView.jar到自己的项目中. 2.将自己的gif图片拷贝到drawable文件夹 3.在xml文件中设置基本属性: &l ...