老师,这里没看明白

老师,这里没看明白

drag(box,{

x:true,

y:true

});

function drag(el,options){

options.x = typeof options.x !== "undefined"? options.x: true;

options.y = typeof options.y !== "undefined"? options.y: false;

if(!options.x&&!options.y) return;

这里的if后面的return永远不会触发吧。。?optionsx和y有值也是false,没值也会因为逻辑与变为false不走return这一步。。


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,x传入true时,代表允许x方向移动,传入为false,代表不允许x方向移动,y同理。正常情况下,我们肯定是传x为true或者y为true,或者二者都为true,但是不能否定的是,可能存在xy都为false的情况,比如某些人恶作剧,非得都传false,所以我们要把这种情况规避掉,因此写了这段代码。

即为了保证代码在任何情况下都能正常、高效的运行,我们还是要考虑这些不太可能发生的情况,这样代码会更严谨些。

祝学习愉快!

好帮手慕久久 2020-07-23 13:50:31

同学你好,可能会执行到的,当调用drag方法时,传入的x、y都是false时,就会执行到,具体如下:

http://img1.sycdn.imooc.com//climg/5f19250909c2041b05030148.jpg

以x为例,当传入x为false时,‘typeof options.x !== 'undefined'’为true,options.x 经过三元表达式的计算,值为false,y同理:

http://img1.sycdn.imooc.com//climg/5f19251709c1afb817160219.jpg

此时options.x与options.y满足if的条件,就会执行return,即终止代码往下继续执行。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

  • 提问者 Darkholme #1
    什么情况下会同时传入xy为false啊?
    2020-07-23 14:21:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师