浅谈 javascript 中的比较操作符 ==
· 阅读需 3 分钟
我们知道javascript中的比较操作符有2种,== 和 ===
我们知道javascript中的比较操作符有2种,== 和 ===
javascript 中的对象比较并不是值的比较.
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
“M+”: this.getMonth() + 1, //月份
“d+”: this.getDate(), //日
“h+”: this.getHours(), //小时
“m+”: this.getMinutes(), //分
“s+”: this.getSeconds(), //秒
“q+”: Math.floor((this.getMonth() + 3) / 3), //季度
“S”: this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + “”).substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp(“(“ + k + “)”).test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((“00″ + o[k]).substr((“” + o[k]).length)));
return fmt;
}
其实javascript中并没有像其他强类型语言里的模块作用域.
写前端小插件最容易带来的错觉,就是“东西很小,怎么写都行”。尤其做分享按钮、浮层、复制链接这类轻量功能时,很多实现一开始都很快:挂几个全局变量、塞一段样式、暴露一个初始化函数,页面立刻就能用。
表面上看,CommonJS 迁移到 ES Module 很像一次语法替换:require 换成 import,module.exports 换成 export。可 2019 年前后我自己在项目里碰这件事时,真正拖慢进度的从来不是语法本身,而是模块边界和运行上下文没先想明白。
2014 年前端最明显的变化之一,就是大家开始不再满足于“jQuery 把页面拼起来”这种方式了。页面逻辑越来越复杂,数据与视图之间的关系也越来越需要一种更系统的组织方法。
第一次看 AngularJS 的指令示例时,很容易觉得它像一种“什么都能包起来”的能力。按钮、列表、弹层、表单,似乎都可以做成指令。这个想法没错,但如果刚入门就把所有逻辑都往指令里塞,通常很快会把自己绕进去。
页面一旦出现“点击没反应”或者“滚动明显发卡”,很多人会笼统地说这是性能问题。但性能问题如果只停在这个词上,其实没有任何帮助。对前端来说,更实用的还是先把问题拆开:是逻辑没走到,还是逻辑走到了但执行得太重。
2013 年前端工程化还远没有今天这么成熟,但团队已经开始意识到:文件压缩、拼接、编译、监听这些工作,不能一直靠手工做。