JavaScript 懒癌患者福利
东西比较老了,大家有啥原生的 JavaScript 魔性的写法也可以 po 出来大家一起。
以下的绝大部分做法的本质是因为懒 ˙Ꙫ˙
不建议初学者使用,一不小心就坑到自己 (:з」∠)
//正常版
if(love_me) {
love_you_too(); // love_me为真才会执行
}
yo(); // 永远都会执行
//懒癌版
if(love_me)
love_you_too(); // love_me为真才会执行
yo(); // 永远都会执行
//掩耳盗铃版
if(love_me)
love_you_too(); // love_me为真才会执行
yo(); // 缩进对齐也没用,依然永远都会执行(python表示不服)
条件 ? 满足时执行 : 否则执行
//正常版本
if(me){
yourHert = me;
}else{
yourHert = another;
}
//懒癌版
yourHert = me || another;
//正常版
if(love_me) {
love_you_too();
} else {
emmmm();
}
//懒癌版
love_me ? love_you_too() : emmmm();
//正常版
function greet(love_me) {
if(love_me) {
return 'Love you too!';
} else {
return 'Emmmm...';
}
}
//懒癌版
function greet(love_me) {
if(love_me)
return 'Love you too!'; // 如果love_me为真,此处直接返回,后面的通通不会执行
return 'Emmmm...'; // 否则就会一直执行到这一步
}
复制代码
//正常版
function 问好(姓名) {
if(!姓名) {
姓名 = '王花花';
}
return '你好' + 姓名;
}
//懒癌版
function 问好(姓名) {
姓名 = 姓名 || '王花花'; // 如果传了姓名就用,没传默认设为"王花花"
return '你好' + 姓名;
}
复制代码
//正常版
var a;
var b;
var c;
//懒癌版
var a, b, c;
//懒癌洁癖实用主义综合症患者(逃
var a
, b
, c
;
//正常版
var a = 1;
var b = a;
var c = b;
//懒癌版
var a = 1, b = a, c = b;
//懒癌洁癖实用主义综合症患者
var a, b, c;
a = b = c = 1;
一般用于隔离作用域,一个文件写一个,防止一不小心污染全局变量。
//正常版
启动();
function 启动() {
'use strict';
// ...
}
//懒癌版
(function () {
'use strict';
// ...
})();
/*
可以这样理解
先用括号把这个匿名函数包起来:
(匿名函数)
然后执行:
(匿名函数)();
*/
懒癌晚期版
!function () {
'use strict';
// ...
}();
懒癌领悟版
;(function () { // 行首的分号是干嘛的?
'use strict';
// ...
})();
复制代码
这里小伙伴就要问了,前面的 “ ; ”干嘛用的,这里主要是为了防止文件压缩的时候,和前面的文件产生问题。毕竟没了分隔符 js 代码有时间就 gg 了。还半天找不到出处。
不推荐
var x = 99,
y = 100;
console.log(window.x + ' ' + window.y);
推荐
带入参数,注意 “ ; ”
;(function(window){
'use strict';
var x = 99,
y = 100;
console.log(window.x + ' ' + window.y);
}(window));
复制代码
不推荐
(function(){
'use strict';
var x = 99,
y = 100,
c,
elem=$('body');
console.log(window.x + ' ' + window.y);
$(document).on('click',function(){
alert("hello world!")
})
if( Object.prototype.toString.call(undefined) ){
//code
}
}());
复制代码
推荐
带入参数,严格模式写在你的作用域内
;(function($,window,document,undefined){
'use strict';
var x = 99,
y = 100,
c,
elem=$('body');
console.log(window.x + ' ' + window.y);
$(document).on('click',function(){
});
if( Object.prototype.toString.call(undefined) ){
//code
}
}(jQuery,window,document));
复制代码
切勿在语句块内声明函数,在 ECMAScript 5 的严格模式下,这是不合法的。函数声明应该在作用域的顶层。但在语句块内可将函数申明转化为函数表达式赋值给变量。 不推荐
if (x) {
function foo() {}
}
复制代码
推荐
if (x) {
var foo = function() {};
}
复制代码
使用for循环过程中,数组的长度,使用一个变量来接收,这样有利于代码执行效率得到提高,而不是每走一次循环,都得重新计算数组长度
不推荐
for(var i=0;i复制代码
推荐
var i = 0,
len = arr.length;
for(;i复制代码