嘿,你們的時間很抱歉,但我遇到了一個奇怪的情況。我有一個數據庫,我用名稱存儲座標(php & mysql)。當某人搜索某個php腳本運行並將查詢保存在3個不同的變量中時,它應該是一個數組類型。然後我使用JavaScript將這些php數組轉換爲JavaScript數組。座標是好的,但名稱是字符串類型時,我嘗試split()函數它給出了錯誤,因爲它是一個數組(因爲我知道搜索後)。另一個奇怪的是,當我console.log它的字符串類型名稱,但是當我查看源代碼時,它顯示爲一個數組。奇怪的JavaScript/PHP變量類型
var lon = <?php echo '["' . implode('", "', $lon) . '"]' ?>;
var lat = <?php echo '["' . implode('", "', $lat) . '"]' ?>;
var name = <?php echo '["' . implode('", "', $name) . '"]' ?>;
在源標籤的輸出(鉻)
var lon = ["39.070200", "39.072365", "39.064469"];
var lat = ["21.018064", "21.017744", "21.000059"];
var name = ["Saint Dimitrios", "Saint Charalampos", "Saint Kosmas"];
,然後控制檯
console.log(lon);
console.log(typeof lon);
console.log(typeof name);
在控制檯
["21.018064", "21.017744", "21.000059"] //which when I click it identifies it as an array
object
string
在PHP聲明的實際輸出腳本
$lon = [];
$lat = [];
$name = [];
和取出
while ($row = mysqli_fetch_array($query)) {
$name[] = $row['name'];
$lon[] = $row['lon'];
$lat[] = $row['lat'];
}
視後@Xufox指的是,名字是一個保留關鍵字在窗口範圍內,因此它的typeof將返回String。可能會出現混淆,因爲JavaScript數據類型是動態的 –
@MathiasW'name'不是保留關鍵字。這是一個屬性,具有類似getter-setter的行爲。設置時,它被轉換爲字符串。這並不涉及動態類型。 'window.name'只是一個特殊的用途,需要保持一個字符串。 – Xufox
感謝您的更正@Xufox,我的壞! –