带有前导零的数字在JavaScript中会发生变化

Jas*_*247 3 javascript php html5

我使用print语句从php调用javascript函数打印出html代码,我传入一个整数.但是,在php中传递的值与javascript函数接收的数字不匹配,我不知道为什么.

这是调用javascript函数的php:

$upc = $items[$i]->GetUPC();
print "upc: " . $upc . "<br/>";

$delete = "<a href='#' onclick='removeFromCart(". $upc .")' ><img src='".$redx."' height='17' width='17' /></a>";
Run Code Online (Sandbox Code Playgroud)

print语句打印出值:0011110416605

在页面上,使用视图源,这是这个标签:

<a href='#' onclick='removeFromCart(0011110416605)' >
Run Code Online (Sandbox Code Playgroud)

这是被调用的javascript函数:

function removeFromCart(itemID){
    var option = document.getElementById("select_cart");
    var selected = option.options[option.selectedIndex].value;

    alert(itemID);

    loadCart(itemID,selected,"","remove");
}
Run Code Online (Sandbox Code Playgroud)

警报框正在打印出数字:1226972549

我能理解它是否正在删除前导0,但这个数字完全不同.有谁知道为什么会这样?

Viv*_*ath 8

JavaScript认为它是八进制值(因为前导零和缺少大于的数字7).八进制的十进制值00111104166051226972549.例:

> var value = 010; //10 in octal
> console.log(value);
> 8  //is 8 in decimal
Run Code Online (Sandbox Code Playgroud)

改为使用字符串:

removeFromCart("0011110416605")
Run Code Online (Sandbox Code Playgroud)