【问题标题】:Is it possible to use string functions on numbers in javascript? [closed]是否可以在javascript中对数字使用字符串函数? [关闭]
【发布时间】:2019-01-02 00:02:33
【问题描述】:

你能告诉我是否可以在 Javascript 中对数字使用字符串函数?我有一个代码需要对字符串值进行一些修改。喜欢这里:

var value = 0;

if( tableRow.find('input').length )
{
    value = tableRow.find('input').val();
}

value = value.replace(/\s/g, '')  // Remove spaces

但有时 replace() 之前的值仍然默认为 0,即数字类型。那么可以在号码上调用替换(或其他字符串函数)吗?它似乎有效,但我不确定是否所有浏览器都支持它。

编辑:不,这是不可能的。我的代码工作正常,因为它始终是字符串并且不会跳过条件。但是数字类型的变量没有 .string() 函数。

【问题讨论】:

  • 你试过console.log( typeof someInput.value )console.log( typeof $somejQInput.val() )吗?
  • 您确定返回值是0 而不是"0"
  • 您的代码正在修改Strings,它从不修改Numbers,所以没有问题
  • .val() 总是返回一个字符串。
  • @JaromandaX - 如果if 条件为假,则不会。

标签: javascript string replace


【解决方案1】:

是否可以在javascript中对数字使用字符串函数?

没有。数字和字符串有不同的方法。数字没有replace 方法(因为它对数字没有意义,但对字符串有意义)。

但有时 replace() 之前的值仍然默认为 0,即数字类型。

为避免这种情况,请将您的默认值设为字符串:

var value = "0";
// ---------^-^

if( tableRow.find('input').length )
{
    value = tableRow.find('input').val();
}

value = value.replace(/\s/g, '')  // Remove spaces

...或者只在另一条路径上做replace,并在另一条路径上转换为数字:

var value = 0;

if( tableRow.find('input').length )
{
    value = tableRow.find('input').val();
    value = +value.replace(/\s/g, '')  // Remove spaces, convert to number
}

+ 只是转换为数字的一种方式。You have several options,各有利弊。)

【讨论】:

    【解决方案2】:

    您不能在号码上拨打replace。您可以做的是在value.toString() 上调用它或将value 最初设置为0

    【讨论】:

    • 是的,你是对的。 Numbers 没有 .string() 函数。我的代码有效,因为它始终是字符串,并且在我的情况下不会跳过条件。
    【解决方案3】:

    不,不能对数字使用替换,因为 Number 类中没有这样的功能。

    您的值可能是一个字符串,(使用 typeof(value) 检查它),仅包含数字的字符串不会使其成为数字。

    value = 10 与 value = "10" 不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      相关资源
      最近更新 更多