php变量给js赋值0后在js中判断变量为0、'0'、''、null、false中需要注意的坑
在js中变量if判断和php有一些不同之处,php是弱语言,所以产生的差异需要注意。
在php中变量为0、'0'、''、null、false时判断为非则成立,js中'0'是一个字符串,如果php给js赋值时需要注意,如果php中为'0'或者为0时赋值到js中不需要单引号或者双引号,直接输出即可,或者用parseInt强制转换成整形,看示例:
如果php中'0'或者为 0 时赋值到js中
php代码:
<?php
$v = '0';
?>
js代码:
<script type="text/javascript">
var v = '<?php echo $v;?>'; // 这是错误的,直接是一个字符串了
var v = <?php echo $v;?>; // 正确写法
if(v){
alert('Y');
}else{
alert('N');
}
</script>
如果php中为null或者false时php输出是什么也没有的,所以js中会报错,如 var v = ;
如果必须通过后端给js赋值时在php中最好是赋值不同的标识来判断,示例:
php代码:
<?php
// $v 为 ''、0、'0'、null、false时
$flag = 'Y';
if(!$v){
$flag = 'N';
}
?>
js代码
<script type="text/javascript">
var v = '<?php echo $flag;?>';
if(v == 'Y'){
alert('Y');
}else{
alert('N');
}
</script>