博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP和Javascript里诡异的0和空
阅读量:5078 次
发布时间:2019-06-12

本文共 1431 字,大约阅读时间需要 4 分钟。

先观察以下PHP代码:

if ('' == false) echo 'OK'.PHP_EOL;

else echo 'NO'.PHP_EOL;
if ('') echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;
if ('0' == false) echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;
if ('0') echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;
if (array() == false) echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;
if (array()) echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;
if (array(0) == false) echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;
if (array(0)) echo 'OK'.PHP_EOL;
else echo 'NO'.PHP_EOL;

在看以下Javascript代码:

if ('' == false) console.log('OK');

else console.log('NO');
if ('') console.log('OK');
else console.log('NO');
if ('0' == false) console.log('OK');
else console.log('NO');
if ('0') console.log('OK');
else console.log('NO');
if ([] == false) console.log('OK');
else console.log('NO');
if ([]) console.log('OK');
else console.log('NO');
if ([0] == false) console.log('OK');
else console.log('NO');
if ([0]) console.log('OK');
else console.log('NO');

以上PHP代码的输出结果为:

OK

NO
OK
NO
OK
NO
NO
OK

以上Javascript代码的输出结果为:

OK

NO
OK
OK
OK
OK
OK
OK

经过分析,我发现,PHP在判断某操作数是否为真时都会把该操作数和true作==比较,并且array(0)==true;Javascript在判断某操作数是否为真时不作==比较,而是按人们的正常逻辑思维去做处理。比如:我们认为字符串'0'里面是有字符的,不为空串,所以为真。再比如:大多数人认为是数组就为真,不管数组里面有没有元素。并且在Javascript里面array(0)==false。这说明在作类型转换时,PHP和Javascript的实现机制也是不一样的。还是Javascript人性化一点,既然字符串'0'经过类型转换可以转换为0,那么数组[0]经过类型转换也要转换成0,符合正常人的逻辑思维。至于PHP的array(0)==true,单独记忆一下吧。

转载于:https://www.cnblogs.com/alwu007/archive/2013/05/21/3091218.html

你可能感兴趣的文章
Ubuntu linux下gcc版本切换
查看>>
记一次Web服务的性能调优
查看>>
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
shell中下载最新版本或指定版本的办法(Dockerfile 中通用)
查看>>
极客时间-左耳听风-程序员攻略-分布式架构工程设计
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>