`

if(obj.length === +obj.length)

 
阅读更多

underscore源码里面这样写的原因是什么呢?

上网找了一下几乎都是复制粘贴,讲的还有明显错误。在stackoverflow上找到一个觉得比较合理的答案:https://stackoverflow.com/questions/9188998/obj-length-obj-length-in-javascript

 

(obj.length === +obj.length)效果其实等同于(typeof obj.length == 'number'),(主要是为了区别对象和数组,对象一般没有length属性,属性字符串,方法等有)至于为什么采用看起来没那么直观的前一种表达方法呢,也许是为了在压缩成mini版的时候节省5个字节

(a.length===+a.length) VS (typeof a.length=='number')

 

分享到:
评论

相关推荐

    JS+CSS实现实用的单击输入框弹出选择框的方法.docx

    //alert(obj.options.length) for (i=0;i<obj.options.length;i++){ mot=obj.options[i].text mov=obj.options[i].value var newoption=document.createElement("OPTION"); newoption.text=mot newoption....

    jsp目录动态菜单

    function ShowMenu(obj,n){ var Nav = obj.parentNode; if(!Nav.id){ var BName = Nav.getElementsByTagName("ul"); var HName = Nav.getElementsByTagName("h2"); var t = 2; }else{ var BName = document....

    主题皮肤JS跨页多选

    if(d.obj.eCont.value==''||d.obj._judgeCorrectDateTime(d.obj.eCont.value)){d.obj._markValue(true); if(d.obj.eCont.value!=''){d.obj._initDate(d.obj.eCont.value,d.obj.dateFmt); d.obj._setRealValue();} ...

    css3 HTML5 Canvas炫酷3D线条延伸动画特效.zip

    if(this.list.length < this.max) { if(Math.random() * 100 ) { var pp = new P(this.x, this.y, this.z); pp.cl = this.cl; this.list.push(pp); } } else { var pp = this.list.shift(); pp.x ...

    js子父级菜单上下展开

    i<obj.length; i++) { obj[i].onmouseover=function() { this.className+=(this.className.length>0? " ": "") + "sfhover"; } obj[i].onMouseDown=function() { this.className+=(this.className.length>0? ...

    ecshop 首页幻灯插件(js)

    if(document.all)document.getElementById("slide-pic").filters[0].enabled=false; ss=""; timen=2000; cp=0; obj=document.getElementById("slide-pic"); cpn=document.getElementById("slide-txt")....

    AjaxJsonView()一些知识

    // if (obj[i].ParamNames.length > 0) { // row_str += '<tr><td rowspan="' + obj[i].ParamNames.length + '"><input type="checkbox" name="_'+obj[i].Id+'" />' + obj[i].Name + '</td>'; // for (var j =...

    动态循环给onclick赋值(解决闭包问题)

    i < elements.length; i++) { (function(index) { elements[index].onclick = function() { console.log(index); }; })(i); } ``` 2. **使用`let`声明变量**:在ES6中,`let`关键字允许块级作用域,可以避免...

    js+css效果 代码

    js+css效果 代码 ... if(obj==arrayli[i]) { arrayli[i].className = "cli"; arrayul[i].className = ""; } else { arrayli[i].className = ""; arrayul[i].className = "hidden"; } } } </script>

    第34章 项目1-博客前端:封装库--引入Ajax1

    if (obj.method === 'get') { obj.url += obj.url.indexOf('?') == -1 ? '?' + obj.data : '&' + obj.data; } if (obj.async === true) { xhr.onreadystatechange = function () { if (xhr.readyState == 4) ...

    进行表格分页js

    if(obj_table!=null) { sorter.init("table"); sorter.size(20); } */ sorter.selectedPagePre = getElement("selectedPagePre");//控制每页行数(前) sorter.selectedPageAfter = getElement("selectedPageAfter...

    页面做判断

    if(obj.username.value.length|| obj.username.value.length>8){ alert("用户名的长度必须在6-8位"); obj.username.focus(); return false; } if(!obj.pass.value=obj.pass.value){ alert("密码...

    JavaScript验证汇总大全

    } else if (minvalue > obj.value || obj.value > maxvalue) { alert(obj_name + "超出范围" + minvalue + "-" + maxvalue + "!"); obj.value = ""; obj.focus(); return false; } } ``` **功能说明:** 此...

    中英文网页转换

    i < obj.length; i++) { var O = obj.item(i); if ("||BR|HR|TEXTAREA|".indexOf("|" + O.tagName + "|") > 0 || O === StranLink_Obj) continue; if (O.title !== "" && O.title !== null) O.title = StranText...

    select元素javascript常用操作

    if (obj.options[i].value == value) { return true; } } return false; } ``` 此函数遍历`<select>`元素的所有选项,检查是否有选项的`value`属性与传入的`value`参数相匹配。如果找到,则返回`true`;否则...

    javascript常用的页面验证

    } else if (minvalue > obj.value || obj.value > maxvalue) { alert(obj_name + "的范围是" + minvalue + "-" + maxvalue + "!"); obj.value = ""; obj.focus(); return false; } } ``` 5. **验证只能是字母...

    任意拖动的视频播放器

    if (obj.code == "NetStream.Buffer.Full") { bufferClip._visible = false; } if(obj.code == "NetStream.Buffer.Empty") { bufferClip._visible = true; } }; var myVolume:Number = 0; var current_...

    ASP.NET程序中常用的三十三种代码.txt

    id="+this.DropDownList1.SelectIndex+"&id1="+...+"’)</script>")  接收参数: string a = Request.QueryString("id"); string b = Request.QueryString("id1");  2.为按钮添加对话框 Button1.Attributes....

    canvas的填色画游戏代码.zip

     extend(defaultObj,Obj);  var oldTime=new Date();  var newTime=null;  this.time=defaultObj.time;  this.frequency=defaultObj.frequency;  this.action=defaultObj.action;  this.lastAction=...

    JS实现单击输入框弹出选择框效果完整实例

    obj.options.length = 0; } } ``` 在实际应用中,可能还需要添加事件监听器来触发这些函数,例如,当用户点击输入框时调用`dakai()`,当点击遮罩层或选择完选项后调用`guanbi()`。 这个实例展示了如何利用...

Global site tag (gtag.js) - Google Analytics