学习zepto源码时,发现一个很佩服的写法。
关键点在三元选择符。
首先,假定settings是有传入参数的,此时settings会进行隐式强制类型转换为布尔值,如果为真,元素显示,如果为假,元素隐藏。无可厚非,最具有技术性的(我自己认为的),是在未传入settings参数的时候。
解析一下这段,如果settings!==undefined 取传入的settings参数,即进行到上面提到的settings有参数的步骤。
如果没传参数,即settings === undefined ,此时,会直接取当前元素的display的值,判断是否为‘none’,如果为none,条件结果为真,如果不是‘none’,条件结果为假。然后进行后面的显示隐藏。
相当于一条js代码进行了
1、判断是否传递参数,
2、传递参数, 取值settings,判断settings,强制转换布尔值,
3、未传递参数,取当前元素的display的值,是否为none,也转换为布尔值。