js 当变量值为0,判断是否为空时(0=="")返回ture的问题

本文详细探讨了JavaScript中==与===的区别,包括它们的比较规则及如何处理不同类型的变量之间的比较。通过具体示例,解释了为何某些特定情况下0与空字符串会被视为相等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var aa = 0;
if(aa=="")alert("111");

或者

var aa = 00;
aa==""

都是返回true。


这是因为0与 ’ ’ 转换成布尔型都是false的。

var aa = 0;
if(aa.toString()=="")   //false
   alert("111");

如果不显示将比较的两个表达式转换成类型相同时,那么:
相同的字符串、数值上相等的数字、相同的对象、相同的 Boolean 值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。

此处,将aa和 ’ ’ 均转换成Boolean类型,所以相等。


或者使用===号来比较

var aa = 0;
if(aa==="")   //false
   alert("111");

附:==和===号的区别
简单来说就是使用“==”时,如果两边类型不同,js引擎会把它们转换成相同类型然后在进行比较,而“===”则不会进行类型转换,因此当两边不是属于同一个类型,肯定不相等。例如:

var a = 0, b = '0';

alert((a == b) + '--' + (a === b))

此时看到的结果为“true–false”。

=== 判断规则

1.如果类型不同,就[不相等]
2.如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一个是 NaN,那么[不相等]。(判断一个值是否是NaN,只能用isNaN()来判断)
3.如果两个都是字符串,每个位置的字符都一样,那么[相等];否则[不相等]。
4.如果两个值都是true,或者都是false,那么[相等]。
5.如果两个值都引用同一个对象或函数,那么[相等];否则[不相等]。
6.如果两个值都是null,或者都是undefined,那么[相等]。

== 判断规则:
1.如果两个值类型相同,进行 === 比较。
2.如果两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
3.如果一个是null、一个是undefined,那么[相等]。
4.如果一个是字符串,一个是数值,把字符串转换成数值再进行比较。
5.如果任一值是 true,把它转换成 1 再比较;如果任一值是 false,把它转换成 0 再比较。
6.如果一个是对象,另一个是数值或字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。非js核心的对象,令说(比较麻烦,我也不大懂)
7.任何其他组合,都[不相等]。

特别需要注意的是true、false的转换,例如:

alert(true == 1);  //ture
alert(true == 2); //false, true会转换成number,也就是1,当然 1 不等于 2
//可以使用 !! 来把一个数据类型转换为boolean型
alert(true == !!2) //true,!2 === false !(!=2) = !false = true

另外在js中,如果把一个变量用在逻辑运算中,那么变量在无初始值或者其值为 0、-0、null、”、false、undefined 或者 NaN时,它的值为 false,这意味test==false,当test为undefined的时候是true的,这正是!==和===的 有用地方。

这两个操作符将检查变量的精确值(比如null) 而不是单纯的计算值(false)。

题目2:新增接口脚本编写和执行测试,并执行脚本。(50分) 1、员工下面新增员工接口描述如下: 接口功能:提供员工新增处理。 接口地址(根据实际系统IP及端口自行替换): http://ihrm-java.itheima.net/api/sys/user。 请求方式:POST。 请求参数: 参数 必填 类型 说明 username Ture Int 员工名称 mobile Ture String 手机号 workNumber Ture String 入职日期 timeOfEntry Ture String 年限 formOfEmployment Ture String 员工聘请形式 departmentName Ture String 部门名称 departmentId Ture String 部门ID correctionTime Ture String 间 响应结果: { "success": true, "code": 10000, "message": "操作成功!", "data": null } 其余均失败,相应结果: {   "success": false,   "code": 99999,   "message": "抱歉,系统繁忙,请稍后重试!",   "data": null } 2、接口测试要求说明: 在Postman中新建Collections集,测试集命名为Test_Add; 在Test_Add中新建测试用例1,Login脚本; Login脚本URL为:https://ihrm-java.itheima.net/api/sys/login; Login脚本Json参数为:{"mobile":"13800000002","password":"929itheima.CN032@.当前日期"}; 在Login脚本的Tests中编写代码,将Login接口返回中的获取到的data的使用setEnvironmentVariable方法存放到环境变量中,环境变量命名为token; 在Test_Add中新建测试用例2,Add脚本; 将Login中获取的变量token放在Add脚本Authorization界面下的Bearer Token中; 在Environment中新建VARIABLE为“token”,其他的环境变量,方便用来调试Add脚本; Add脚本URL为:http://ihrm-java.itheima.net/api/sys/user; Add脚本Json参数为(mobi1e等参数适当变化,有些字段不能重复): {  "username":"xiaolee",  "mobile":"15299999999",  "workNumber":"220425",  "timeOfEntry":"2023-04-01",  "formOfEmployment":"1",  "departmentName":"研发部",  "departmentId":"1412421425733664777",  "correctionTime":"2022-12-12T16:00:00.000Z" } 注意:手机号不能重复。"mobile":"15299999999" 在Add脚本的Tests中对执行结果进行断言判断,设置两个断言:①判断响应状态码为200;②使用JSON value check方法判断响应内容中返回的message参数中存在“操作成功”字符串; 设置执行测试集Test_Add;
06-18
题目1:登录接口脚本编写和执行测试。(50分) 1、登录接口描述如下: 接口功能:提供用户登录功能处理,根据传入的用户名和密码判断登录状态。 接口地址(根据实际系统IP及端口自行替换): https://ihrm-java.itheima.net/api/sys/login 请求方式:POST。 请求参数: 参数 必填 类型 说明 mobile Ture String 用户名 password Ture String 用户密码 响应结果: 登录成功返回: { "success": true, "code": 10000, "message": "操作成功!", "data": "04bfadce-880b-45ca-ab3c-50c0f148756f" } 登录失败返回(密码错误): {  "success": false,  "code": 20001,  "message": "用户名或密码错误",  "data": null } 登录失败返回(密码为): {  "success": false,  "code": 20001,  "message": "用户名或密码错误",  "data": null } 2、接口测试要求说明: 在Postman中新建Collections集,测试集命名为Data_Driver; 在测试集Data_Driver下新建data_driver脚本; 在脚本Body中的raw下新建json参数(mobile、password)进行传,其中mobile、password参数改为变量接收数据驱动中的数据; 新建csv文件保存接口数据驱动测试数据,csv参数名为mobile、password;用户名和密码数据为: mobile password 13800000002 正确的密码 13800000002 12345 13800000002 新建测试用例集Data_Driver,执行Run,在测试集合运行页面设置执行要求,运行次数要求3次,请求间隔间为500ms,发送请求的data文件导入前面的新建csv数据文件; 设置完成执行测试用例集; 截图要求:一共6张图,分别为:①测试用例脚本包含URL和raw中参数相关内容截图;②测试用例集导入csv数据后预览数据的截图;③Collection Runner页面的截图;④、⑤、⑥分别截图三条用例的测试报告中Response Body的全部内容。
06-16
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值