如果把对象换成数组你是不是好理解一些?
function nullFlag(obj){for(var i=0i<obj.lengthi++){
return false//数组长度为0时不会进入循环,所以不会返回false
}
return true
}
for(var o in obj)这种用法叫“增强的for循环”,用来遍历对象属性的。
其实对象也是一样的,当对象为空时是不会进入循环,所以返回true。
下面的示例是去除末尾的空格,即如果只输入了空格,请求将被拦截:<script>
//去掉字串右边的空格
function rTrim(str)
{
var iLength
iLength = str.length
if (str.charAt(iLength - 1) == " ")
{
//如果字串右边第一个字符为空格
str = str.slice(0, iLength - 1)//将空格从字串中去掉
//这一句也可改成 str = str.substring(0, iLength - 1)
str = rTrim(str) //递归调用
}
return str
}
//变量
var name = "A A"
//去除空格
name=rTrim(name)
if (name){
alert("内容是:"+name+"")
}
</script>
下面的两个函数提供了去除左边的空格和两端空格的方法:
//去掉字串左边的空格
function lTrim(str)
{
if (str.charAt(0) == " ")
{
//如果字串左边第一个字符为空格
str = str.slice(1)//将空格从字串中去掉
//这一句也可改成 str = str.substring(1, str.length)
str = lTrim(str) //递归调用
}
return str
}
//去两端空格
function jtrim(sstr)
{
var astr=""
var dstr=""
var flag=0
for (i=0i<sstr.lengthi++)
{if ((sstr.charAt(i)!=' ')||(flag!=0))
{dstr+=sstr.charAt(i)
flag=1
}
}
flag=0
for (i=dstr.length-1i>=0i--)
{if ((dstr.charAt(i)!=' ')||(flag!=0))
{astr+=dstr.charAt(i)
flag=1
}
}
dstr=""
for (i=astr.length-1i>=0i--) dstr+=astr.charAt(i)
return dstr
}
当然,把前面两个函数一起调用也可以去掉两端空格
这个问题其实不难,如果你悬赏分高点会很多人帮你解决的
正规写法:if(id2 === undefined){
//id2没有传参数 注意是3个等号。
}
这是jQuery中源码的写法。