编写一个方法 求一个字符串的字节长度
<script language="javascript" type="text/javascript">
new function(s)
{
if(!arguments.length||!s) return null;
if(""==s) return 0;
var l=0;
for(var i=0;i<s.length;i++)
{
   if(s.charCodeAt(i)>255) l+=2;
   else l++;
}
alert(l);
}("你");
</script>
这段代码有几个地方不是很懂,一个是arguments 是什么意思。还有!s代表什么?还有charCodeAt()的意思是不是什么意思。请教大家。

解决方案 »

  1.   

    arguments 表示传入的参数集,!s表示s有值不为空
      

  2.   

    arguments 参数的集合
    arguments[0]代表第一个参数
    arguments.length代表参数的个数
    !s  s是参数  if(!s)是说参数不存在,执行return null;
    charCodeAt()  返回的是Unicode 编码
    如:
    <script type="text/javascript">
    var str="a"
    alert(str.charCodeAt(0))
    </script>
    返回97
    if(s.charCodeAt(i)>255) l+=2; 
    估计Unicode 编码中大于255的算2个字节吧  汉字之类的
      

  3.   

    js用的是unicode
    汉字跟英文字母按理说应该是一样长的
      

  4.   

    详细 正解if(s.charCodeAt(i)>255) l+=2; 检验中文
      

  5.   

    我记得字符串对象有length属性的吧
      

  6.   

    <script language="javascript" type="text/javascript"> 
        new function(s) {  // s指最后括号中的参数"你好abc"

    //arguments指最下面括号中的参数集, .length指此集合的参数个数
    //如果最下面括号中是("你好abc","真诚得分"),那么arguments={"你好abc","真诚得分"}, .length=2
    //!s 如楼上所解,表示参数是否非空
    if(!arguments.length||!s) 
       return null; 
    if(""==s)
       return 0; 
    var l=0; 
    for(var i=0;i <s.length;i++){ 
               //中文的值都是大于255的,所以“你好”为4个字节,可以测试:alert(s.charCodeAt(i));
       if(s.charCodeAt(i)>255) 
                  l+=2; 
       else
          l++; 

    alert(l); 
       }("你好abc"); 
    </script> 
      

  7.   

    function getL(input)
    {
        var out = input.replace(/[^\x00-\xff]/g,'**');
        return out.length;
    }
      

  8.   

    之前写过一个取指定长度字符的,中文字符算两个,可以参考一下相关的计算方法:
    <script type="text/javascript">var getStr = function(str,n){
        var tmpStr = str.substr(0,n);
        var tmpCode = tmpStr.replace(/[^\x00-\xff]/g,'\r\n').split('');
        n = (tmpCode[n-1]=='\r')?n-2:n-1;
        var l = tmpCode.slice(0,n).join('').replace(/\r\n/g,'*').length+1;
        return tmpStr.substr(0,l);
    };alert(getStr('我ABC汉DE字',6));</script>
    演示请参见JSLib中[取字符中文算两个]部分