关于改写$.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回答
同学你好,因为当你不传递参数时,option的值默认是undefined,无法使用点的方式访问属性,所以option.css3这种写法会报错。
建议:使用三元运算符,先判断option是否有值,然后在进行操作,设置默认值。示例:
同学可以测试下,如果还有疑惑,可以将你写的完整代码全部粘贴过来,便于帮助同学准确的定位与解决问题,祝学习愉快~
相似问题