zoukankan      html  css  js  c++  java
  • javascript小陷阱

    //有点意思

    case 1:
    function
    a(x) {

    console.log(x);
    function b() {
    var x= x || 8;
    console.log(x);
    }
    b()

    } 

     a(3);//猜猜?

    case 2: 

    function a(x) {
    console.log(x);
    function b() {
    var x;
    x= x || 8;
    console.log(x);
    }
    b()
    }

    a(3); //猜猜?

    结果是一样的,都是3,8;为什么不是3,3呢?原因也很简单,函数b中的var x在作怪,使得在b中x的值首先变成了undefined,

    var x=x||8;与var x;x=x||8 是等价的,前面那种形式实际上会先被js引擎转换成后者, 

    自然x=undefined||8会得到x=8。

    之所以提到这个小问题,是因为在一个项目中不小心写了这样的代码: 

    var cache={
    readServer:function (callback) {
                var paramsObj = {
                    lemmaId:commonSubmitData.lemmaId,
                    versionId:commonSubmitData.versionId,
                    subLemmaId:dynamicData.activeSubLemmaId,
                    subVersionId:dynamicData.activeSubVersionId,
                    type:1
                };
                var paramsStr = baidu.url.jsonToQuery(paramsObj),
                    self = this;

                initData.communicating = true;
                ajax.post(initData.doubtShowUrl, paramsStr, function (xhr, msg) {
                    initData.firstClick = false;
                    initData.communicating = false;
                    if (!self.doubtDataCache[dynamicData.activeSubLemmaId]) {
                        self.doubtDataCache[dynamicData.activeSubLemmaId] = json.parse(msg);
                    }

    //下面两行是错误的
    var callback=callback||function(){};
    callback.call(self, self.doubtDataCache[dynamicData.activeSubLemmaId]);
    /***这里是正确的
                    if(lang.isFunction(callback)){
                        callback.call(self, self.doubtDataCache[dynamicData.activeSubLemmaId]);
                    }
    */
                    //console.log(callback);
                });
            }

    }  

  • 相关阅读:
    JavaScript 焦点事件
    在虚拟机里面运行java程序
    CentOS 7 命令
    修改和删除
    查询语句,查询指定的字段,带条件查询,排序查询
    Redis系列之-缓存的使用和优化
    Redis系列之-Redis-Sentinel
    Redis系列之主从复制原理与优化
    Redis系列之-使用常见问题
    Redis系列之-持久化
  • 原文地址:https://www.cnblogs.com/argb/p/2607559.html
Copyright © 2011-2022 走看看