前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 懒癌患者福利

JavaScript 懒癌患者福利

作者头像
西南_张家辉
发布2021-02-02 09:51:53
2840
发布2021-02-02 09:51:53
举报
文章被收录于专栏:张家辉的树屋

JavaScript 懒癌患者福利

东西比较老了,大家有啥原生的 JavaScript 魔性的写法也可以 po 出来大家一起。

以下的绝大部分做法的本质是因为懒 ˙Ꙫ˙

不建议初学者使用,一不小心就坑到自己 (:з」∠)

  • 当然懒癌的终极目标就是愉快的使用各种函数和库解决你的问题。函数式编程万岁<( ̄▽ ̄)/,没有什么是 jq 解决不了的 (^o^)/
  • 判断省略括号
代码语言:javascript
复制

//正常版
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表示不服)
  • 三元运算符和 ||

条件 ? 满足时执行 : 否则执行

代码语言:javascript
复制
//正常版本

if(me){
    yourHert = me;
}else{
    yourHert = another;
}

//懒癌版
yourHert = me || another;


//正常版
if(love_me) {
  love_you_too();
} else {
  emmmm();
}

//懒癌版
love_me ? love_you_too() : emmmm();
  • 懒癌判断函数
代码语言:javascript
复制
//正常版
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...'; // 否则就会一直执行到这一步
}
复制代码
  • ES5中设置传参默认值
代码语言:javascript
复制
//正常版
function 问好(姓名) {
  if(!姓名) {
    姓名 = '王花花';
  }
  return '你好' + 姓名;
}

//懒癌版
function 问好(姓名) {
  姓名 = 姓名 || '王花花'; // 如果传了姓名就用,没传默认设为"王花花"
  return '你好' + 姓名;
}
复制代码
  • 批量声明变量
代码语言:javascript
复制

//正常版
var a;
var b;
var c;
//懒癌版
var a, b, c;
//懒癌洁癖实用主义综合症患者(逃
var a
  , b
  , c
  ;
  • 批量变量赋值
代码语言:javascript
复制

//正常版
var a = 1;
var b = a;
var c = b;
//懒癌版
var a = 1, b = a, c = b;
//懒癌洁癖实用主义综合症患者
var a, b, c;
a = b = c = 1;
  • 自触发函数 (IIFE)

一般用于隔离作用域,一个文件写一个,防止一不小心污染全局变量。

代码语言:javascript
复制
//正常版
启动();
function 启动() {
  'use strict';
  // ...
}
//懒癌版
(function () {
  'use strict';
  // ...
})();

/*
可以这样理解
先用括号把这个匿名函数包起来:
(匿名函数)

然后执行:
(匿名函数)();
*/

懒癌晚期版
!function () {
  'use strict';
  // ...
}();
懒癌领悟版
;(function () { // 行首的分号是干嘛的?
  'use strict';
  // ...
})();
复制代码

这里小伙伴就要问了,前面的 “ ; ”干嘛用的,这里主要是为了防止文件压缩的时候,和前面的文件产生问题。毕竟没了分隔符 js 代码有时间就 gg 了。还半天找不到出处。

JavaScript 代码规范

  • 全局命名空间污染 总是将代码放在一个立即执行的表达式中,形成一个独立的模块

不推荐

代码语言:javascript
复制
var x = 99,
    y = 100;
console.log(window.x + ' ' + window.y);

推荐

带入参数,注意 “ ; ”

代码语言:javascript
复制
;(function(window){
    'use strict';
    var x = 99,
        y = 100;
    console.log(window.x + ' ' + window.y);
}(window));
复制代码
  • 立即执行函数

不推荐

代码语言:javascript
复制
(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
    }
}());
复制代码

推荐

带入参数,严格模式写在你的作用域内

代码语言:javascript
复制
;(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 的严格模式下,这是不合法的。函数声明应该在作用域的顶层。但在语句块内可将函数申明转化为函数表达式赋值给变量。 不推荐

代码语言:javascript
复制
if (x) {
  function foo() {}
}
复制代码

推荐

代码语言:javascript
复制
if (x) {
  var foo = function() {};
}
复制代码
  • for循环

使用for循环过程中,数组的长度,使用一个变量来接收,这样有利于代码执行效率得到提高,而不是每走一次循环,都得重新计算数组长度

不推荐

代码语言:javascript
复制
for(var i=0;i复制代码

推荐

代码语言:javascript
复制
var i = 0,
    len = arr.length;
for(;i复制代码
参考

表严肃

规范你的 JavaScript

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaScript 代码规范
    • 参考
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档