javascript - js这个函数的理解?

 t53457078 发布于 2022-11-09 18:32
function Route(method, path, callbacks, options) {
  options = options || {};//左边的options和右边的options不一样的吧?
  this.path = path;
  this.method = method;
  this.callbacks = callbacks;
  this.regexp = utils.pathRegexp(path
    , this.keys = []
    , options.sensitive
    , options.strict);
}
6 个回答
  • 这就是个JS的类的构造函数.

    2022-11-12 01:42 回答
  • 我最初学习js也是很多疑点,毕竟c/c++在这里是只会返回true或者false,但是,js这里是如果第一个为真,||就返回第一个元素,如果第一个不为真,就返回第二个元素,注意,是整个元素,不是true或false,不管第二个逻辑上为真或假,如果有更多元素,则同理,因为不管它是什么,结果都跟它一致,比如说0||1||{},第一个为0,所以看第二个,第二个为1,好了,返回1,因为||是有真则真,全假则假,现在有一个为真,后面不管是什么,结果都为真了,同理0||{}||1则返回的是{},它是一个js的Object的实例,同理&&会遇到假就返回,不管后面是什么,比如0||{}返回0,有点啰嗦,但是希望你懂,这就是短路逻辑,这个方式经常用来初始化变量,就像你上面的写法,还有一种用法是可以替代if或者三元表达式,比如if(expression){x=1;}可以写成expression && (x=1);灵活运用,但是个人觉得为了好维护,最好还是用if

    2022-11-12 01:42 回答
  • 一样的,同一个变量,只不过如果会进来的 options 可以判为 false 的时候会把 {} 赋给 options,也就是对变量重新赋值

    2022-11-12 01:42 回答
  • 一样的。赋值操作,用于设置默认值,有值直接取options,没值取{}

    2022-11-12 01:42 回答
  •  options = options || {};

    这是一种初始化变量的方式了。
    比如:

    function test(num){
        num = num || 1;
        console.log(num);
    }

    如果你是test(2),那就没啥。
    但如果你是 test(),num就没内容了吧,这时候就会变成num=1;
    这里有个 短路逻辑 的知识点。题主应该知道的吧0.0

    2022-11-12 01:42 回答
  • 先反对上面 theWalker答案里面 全局创建变量。

    //左边的options和右边的options不一样的吧?

    先解释这句话, 是一样的,都是这个func里面局部变量。

    这里作用前面说到了,就是初始化变量,为什么这么做,为了减少下面的判断,后者说是为了保证一些基本逻辑能执行。

    例如这里如果不写 options = options || {}

    那么当你执行 Route(1,2,3)的时候

    就会报错

    报错的地方在 options.sensitive options.strict

    Cannot read property 'sensitive' of undefined

    你可以试试。

    2022-11-12 01:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有