* 断言,测试函数 * 做功能测试,直接操作元素节点特性判断 * 通过创建一个div元素,检测被传入的fn是否被当前浏览器支持 * @param {Function}
(fn)
| 221 | * @param {Function} |
| 222 | */ |
| 223 | function assert(fn) { |
| 224 | var div = document.createElement("div"); |
| 225 | //此处用try-catch的原因是:被传入的fn很有可能是会报错的。 |
| 226 | //因为fn中用的方法或属性很可能不被当前浏览器所支持。 |
| 227 | try { |
| 228 | //!!一般用来将后面的表达式强制转换为布尔类型的数据(boolean), |
| 229 | //!也就是只能是true或者false |
| 230 | return !!fn(div); |
| 231 | } catch (e) { |
| 232 | return false; |
| 233 | } finally { |
| 234 | // 移除这个测试的节点 |
| 235 | if (div.parentNode) { |
| 236 | div.parentNode.removeChild(div); |
| 237 | } |
| 238 | //针对ie释放内存 |
| 239 | div = null; |
| 240 | } |
| 241 | } |
| 242 | |
| 243 | |
| 244 | //===================================================== |