• JS奇异写法


    字符串转成整型

    typeof Number('44.5');
    typeof parseInt('44.5');
    typeof parseFloat('44.5');
    typeof ('44.5'-0);
    typeof +'44.5';
    typeof ('44.5'*1);
    typeof ~~'44.5';//http://james.padolsey.com/javascript/double-bitwise-not/
    typeof '44.5'|0

    快速转换成布尔值

    !!(5555)

    !function(){}

    !function ($) {
        //do sth
    }(window.jQuery);
    

    很奇怪的发现他们在 function 前面加上了感叹号,但往下看到结尾部分的代码 (window.jQuery) 似乎明白了点什么,于是去 stackoverflow 上搜了下。 果然有很多人提过这个问题,这里放出一个: [What does the exclamation mark do before the function?](http://stackoverflow.com/questions/3755606/what-does-the-exclamation-mark-do-before-the-function) 正如之前所想,其加上了 ! 的作用,即将前面的匿名函数 function ($) {} 这是一个函数的声明,当我们需要让它立即执行,就需要使用 () 操作符将函数调用,而 () 操作符需要前面是一个表达式,通常,我们会使用一对圆括号将匿名函数声明转换成表达式。所以,我们通常是这么写的:

    `(function () {}) ()`

    那么,其实,最后的括号是用来执行函数的,我们只要保证它前面是个结果是个函数的表达式就可以了。那么,其实, js 中很多操作符,我们都可以使用,如 [JavaScript 秘密花园](http://bonsaiden.github.com/JavaScript-Garden/zh/#function.scopes) 中所说,我们可以写成这个样子:

    `+function(){}();
    (function(){}());`

    当然,理论上也是可以这么写的:

    `-function(){}();
    ~function(){}();`

    至于为什么可以这么做呢,那是因为 () 操作符比 ! 操作符的优先级要高两级,[参见 MDN](https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence) 所以如果是这么一段代码:

    `!function () {
        return false;
    } ()
  • 相关阅读:
    Code first常用命令
    vue问题集锦
    net WebConfig读写
    CefSharp使用心得
    工作问题
    工作总结
    HttpContext.Current.Session为null
    Java基础00-接口组成更新31
    Java基础00-Lamda表达式30
    Java基础00-网络编程29
  • 原文地址:https://www.cnblogs.com/zhepama/p/3053294.html
Copyright © 2020-2023  润新知