关于改写$.extend出了点问题

来源:3-1 用showHide改写dropdown模块

功不唐捐终入海

2020-05-07 16:31:15

$.extent({},defaults,option)是想判断是否传参吗?然后自己给他一个默认参数。

我就想用js写一下怎么老是出错了?

$.fn.extend({

        drop:function(option){

            var options={};

                options.css3=option.css3||false;

                options.js=option.js ||false;

                options.animation=option.animation || 'fade';

            // var options=$.extend({}.defaults,option);

            return this.each(function(){

                dropdown(this,options);

            })

        }

    })

当我不传参的时候短路操作符||的存在第一个参数是undefined转义过来就是false啊就该返回第二个参数啊?

怎么会报错说我option.css3为定义。我就是模仿不传参当然未定义了。蒙蔽了。。。。

写回答

1回答

好帮手慕慕子

2020-05-07

同学你好,因为当你不传递参数时,option的值默认是undefined,无法使用点的方式访问属性,所以option.css3这种写法会报错。

建议:使用三元运算符,先判断option是否有值,然后在进行操作,设置默认值。示例:

http://img.mukewang.com/climg/5eb3db20095e315715481382.jpg

同学可以测试下,如果还有疑惑,可以将你写的完整代码全部粘贴过来,便于帮助同学准确的定位与解决问题,祝学习愉快~

0

0 学习 · 14456 问题

查看课程