奇数javascript/php变量类型
嘿,伙计们,很抱歉占用你们的时间,但我遇到了一个奇怪的情况。我有一个数据库,我在其中存储坐标(php和mysql)和名称。当有人搜索某物时,php脚本将运行并将查询保存在3个不同的变量中,该变量应为数组类型。然后我使用JavaScript将这些php数组转换为JavaScript数组。坐标是可以的,但是当我尝试split()函数时,名称的类型是string,它给出了错误,因为它是一个数组(正如我搜索后理解的那样)。另一个奇怪的情况是,当我输入console.log时,它显示的名称类型是string,但当我查看源代码时,它显示为一个数组奇数javascript/php变量类型,javascript,php,mysqli,Javascript,Php,Mysqli,嘿,伙计们,很抱歉占用你们的时间,但我遇到了一个奇怪的情况。我有一个数据库,我在其中存储坐标(php和mysql)和名称。当有人搜索某物时,php脚本将运行并将查询保存在3个不同的变量中,该变量应为数组类型。然后我使用JavaScript将这些php数组转换为JavaScript数组。坐标是可以的,但是当我尝试split()函数时,名称的类型是string,它给出了错误,因为它是一个数组(正如我搜索后理解的那样)。另一个奇怪的情况是,当我输入console.log时,它显示的名称类型是strin
var lon = <?php echo '["' . implode('", "', $lon) . '"]' ?>;
var lat = <?php echo '["' . implode('", "', $lat) . '"]' ?>;
var name = <?php echo '["' . implode('", "', $name) . '"]' ?>;
然后是控制台
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'];
}
在JavaScript数组中,是以键为数字的对象 尝试在控制台中创建
arr=newarray
,然后调用typeof(arr)
以查看您在vanilla JavaScript环境中新创建的数组也是一个对象
当心!在JavaScript中创建新数组时,length
属性会自动添加到数组中。所以,若您尝试使用foreach
循环记录数组中的每个元素,您将获得另一个为数组长度保留的属性
arr = [1,2,3]
arr.forEach( function(key,i,arr) {
console.log(key)
})
//output
1
2
3
undefined
尝试split()
数组不是一个选项,因为此函数接受字符串值并将其分解为具有已定义分隔符ex的数组
'1,2,3'.split(',')
//result
["1", "2", "3"]
JS中的p.S.函数也是对象。所以基本上你可以做这样的事情:
function myFunc() {
alert('Hello World');
};
myFunc.myProperty = '123';
现在,您可以像往常一样使用
myFunc()
调用函数,也可以使用console.log(myFunc.myProperty)
获取函数的属性,正如post@Xufox所指,name是窗口范围中的保留关键字,因此它的typeof将返回字符串。可能会出现混淆,因为javascript数据类型是dynamic@MathiasWname
不是保留关键字。它是一个具有类似getter-setter行为的属性。设置后,它将转换为字符串。这实际上与动态类型无关window.name
只是有一个特殊的用途,需要保留一个字符串。谢谢@Xufox的更正,我的坏消息!使用变量名的Yew不起作用!当我把它改成@Xufox时,它工作得很好。很抱歉占用您的时间,非常感谢!
function myFunc() {
alert('Hello World');
};
myFunc.myProperty = '123';