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);
                });
            }

    }  

  • 相关阅读:
    Java基础(十四)——API(Calendar类、System类、StringBuilder类、包装类)
    异常
    Java基础(十三)——权限修饰符和内部类
    知识点总结
    Java基础(十二)— —多态
    Java基础(十一)— —继承、抽象类和接口
    java基础(十)——继承
    小程序外部向组件内部传递externalClasses -- 传入样式wxss
    小程序组件交互 -- 传入js
    promise封装小程序的请求类(request,清爽易懂)
  • 原文地址:https://www.cnblogs.com/argb/p/2607559.html
Copyright © 2011-2022 走看看