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
    
    
  • 相关阅读:
    mysql 系统表的作用
    从事务隔离级别谈到Hibernate乐观锁,悲观锁
    python 模拟登陆,请求包含cookie信息
    Python入门介绍
    mysql中设置小数
    分割png图片
    ubuntu 14.04 安装win7虚拟机
    rwx
    获取文件名称 basename 用法
    like tp
  • 原文地址:https://www.cnblogs.com/thecatshidog/p/5815374.html
Copyright © 2011-2022 走看看