zoukankan      html  css  js  c++  java
  • function和感叹号,运算符号的转化

    1、下面的程序经过运算之后,a为true,这个很好理解,但是函数怎么会运行呢?

    var a = !function(){
                alert('message');
            }();
    console.log(a);
    

    下面这个a为defined,但是可以也运行函数

    var a = (function(){
                        alert('message');
            })();
    console.log(a);
    

    其实上面两种方式在于把函数转化成为了表达式使用。
    但是不同的符号所表达的意思是有所不同的,上面函数能够运行的原因是因为符号消除了函数表达式和函数声明的歧义,让解析器可以正确的解析。
    但是,对还有一个但是,符号会处理自己自身的意思,比如!作为取反来使用,()作为转化表达式来使用。

    有这些功能的还有这些常见的用法:

    !function(){alert('message')}()        // true
    +function(){alert('message')}()        // NaN
    -function(){alert('message')}()        // NaN
    ~function(){alert('message')}()        // -1
    var i = function(){return 10}();        // undefined  
    1 && function(){return true}();        // true  
    1, function(){alert('message')}();        // undefined  
    void function(){alert('iifksp')}()        // undefined  
    new function(){alert('iifksp')}()        // Object  
    delete function(){alert('iifksp')}()        // true 
    (function(){alert('message')})()        // undefined
    (function(){alert('message')}())        // undefined
    
    
  • 相关阅读:
    Variant 数组
    socket c/s分佈式編程
    多線程幾個方法說明
    hash表的使用
    MIS系统权限控制的一个简便方法
    git 使用总结
    让 VAGRANT 启动并运行起来
    深入理解 Laravel 中 config 配置加载原理
    Vagrant入门
    php开发APP接口(总结一)
  • 原文地址:https://www.cnblogs.com/thecatshidog/p/5815374.html
Copyright © 2011-2022 走看看