【问题标题】:Under what circumstances is it necessary to perform an explicit cast of a variable to a string in JavaScript?在什么情况下需要在 JavaScript 中将变量显式转换为字符串?
【发布时间】:2010-02-12 13:51:51
【问题描述】:

是否存在绝对需要将 JavaScript 中的变量显式转换为字符串的情况

在下面的例子中没有必要:

var n=1;
var s = "Hello" + n;  
var s = "Hello"+String(n); //not necessary

我在上面使用了一个数值,尽管这不仅仅适用于数字。

【问题讨论】:

    标签: javascript string casting


    【解决方案1】:

    是的,如果你想要“11”而不是 2。

    var n = 1;    
    var s = n + n;
    

    将是s === 2

    【讨论】:

      【解决方案2】:

      如果你想并排显示两个数字...

      var a=5, b = 10;
      
      alert( a+b ); // yields 15
      alert( String(a) + String(b) ); //yields '510'
      

      但我不知道你是否愿意做这样的事情..

      【讨论】:

      • 你可以更简洁地做到这一点:alert(a + "" + b)
      【解决方案3】:

      我会说在这种情况下是必要的:

      var n = 20; 
      var m = 10;
      var s = String(n) + String(m); // "2010" String
      

      【讨论】:

        【解决方案4】:

        这取决于您使用的对象类型。基本对象已经有一个有用的toString 方法可以将它们转换为字符串。但是自定义对象没有。他们将从Object.prototype.toString继承方法。

        因此,当您有一个自定义对象在转换为字符串时应该返回一个有用的字符串时,请定义一个toString 方法:

        function Human(name) {
            this.name = name.toString();
            this.toString = function() {
                return this.name;
            };
            return this;
        }
        var alice = new Human("Alice");
        alert("Hi, I’m " + alice + ".");
        

        【讨论】:

          【解决方案5】:

          当您想对变量使用字符串方法时,通常会将变量转换为字符串。我认为最有用的情况是当您必须在函数中使用字符串方法并且您不知道用户传递给函数的变量类型时。例如,如果要计算变量中的字符数:

          function length(s)
          {
              return s.length;
          }
          

          使用这个函数你只能处理字符串,因为如果用户插入一个数字作为参数,长度属性是未定义的,因为数字对象没有那个属性,所以你必须转换变量:

          function length(s)
          {
               s=s+"";
               return s.length;
          }
          

          这次成功了。

          【讨论】:

            猜你喜欢
            • 2012-05-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-02
            • 2015-04-07
            • 2012-12-31
            • 2013-01-03
            相关资源
            最近更新 更多