【问题标题】:datatypes and javascript... what a nightmare数据类型和 javascript……真是一场噩梦
【发布时间】:2011-01-18 00:56:10
【问题描述】:

所以..

我将数据传递给以不同方式处理字符串和数字的函数。

我希望能够传递一个值数组并检测每个值的类型。

row[0] = 23;
row[1] = "this is a string... look at it be a string!";
row[2] = true;

$.each(row, function(){
  alert(typeof(this));
  //alerts object
});

是否可以检测给定行中的“实际”数据类型?

【问题讨论】:

    标签: javascript types jquery


    【解决方案1】:

    试试

    var row = [ 23, "this is a string", true ];
    
    $.each(row, function (index,item) {
        alert(typeof(item));
    });
    
    // Alerts "number", "string", "boolean"
    

    我尽可能避免在回调中使用“this”,并且使用显式参数通常更清晰、更可预测。

    【讨论】:

    • 不客气。现在我要查看 jQuery 的源代码,以了解为什么您的版本不起作用...
    • this 始终是一个对象。 总是。就是这样。
    • @Roatin 我从来不知道。谢谢。
    • ...即使您执行类似...var notThis = thisnotThis 是一个对象。
    • 除非您使用的是严格模式,但目前还没有浏览器提供该模式。
    【解决方案2】:

    @Rich 建议了最好的解决方案 - 使用传递给回调的值作为参数。引用jQuery doc:

    该值也可以通过this 关键字访问,但Javascript 将始终将this 值包装为Object,即使它是一个简单的字符串或数字值。

    this.valueOf() 可能会帮助您“回到”原始价值。但仍然 - 在该特定示例中,最好使用作为函数参数传递的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-01
      • 2022-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多