js中的if与Java中的if_JS直接if参数的用法JS中!和!!区别

经常在JS中见一些代码直接if(参数),然后参数调用的时候是将元素自己传下去。例如下面代码:

functiontest1(obj){if(obj){

alert($(obj).val());

}else{

alert("has not obj");

}

}

我们分别点击上面的两个输入框显示如下:

ef6f864d319bcb7e279a1cbc6e3cedc6.png

f38555bff0dd561c53e19b2e12ec60f1.png

解释:实际上相当于java中的重载,如果传参数了就走if(obj),不传参数就走else。

也就是如果参数不为空或者nul或者undefinedl或者“”空串则if(obj)成立。

进一步的测试:

functiontest1(obj){if(obj){

alert("has obj");

}else{

alert("has not obj");

}

}

test1();//has not obj

test1(null);//has not obj

test1(undefined);//has not obj

test1("");//has not obj

test1(" ");//has obj

test1("1");//has obj

总结:不传参数,传的参数为null,传的参数为undefined,传的参数为""的时候if(obj)不成立,反之则成立。

补充:直接if(param)可以用于判断参数,也相当于if(param != null),相反if(!param)就相当于if(param == null),例如:

functiontest(a, b) {if (!a || !b) {

alert("参数没传");

}else{

alert("a与b不等于null")

}

}

test();

test("1", "2");

结果:

060379350d09f9a168a4135cdea21bf3.png  

82c928ee939cd6fea473e44332aae2fa.png

补充:实际上是用!与上对象来求得一个布尔值,js中!和!!的区别及用法

js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,

1、!可将变量转换成boolean类型,null、undefined和空字符串、数字0 通过!转为boolean值0为true,其余为false。

!null=true

!undefined=true

!''=true

!100=false

!'abc'=false

!0=true

特别注意0的情况。

2、!!  常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:

判断变量a为非空,未定义或者非空串才能执行方法体的内容

var a;if(a!=null&&typeof(a)!=undefined&&a!=''){//a有内容才执行的代码

}

实际上只需要一个表达式:

if(!a){//a有内容才执行的代码...

}

比如:如下一个验证值必填的函数,有值的话返回true,没值的话返回字符串消息"required."

functionrequired(val) {return !!val || 'required.';

}

console.log(required());

console.log(required(''));

console.log(required(0));

console.log(required("xxxxx"));

结果:

ccf34bfef69b0a5e73bb7a2bbf397ea4.png

(1)required('')解释: !'' 返回的是true, 再进行一次!之后是false。 所以会返回后面的字符串。

(2)required("xxxxx")解释: !"xxxxx" 返回的是false,再进行一次 ! 返回的是true。因此不与后面的字符串进行逻辑或运算,直接返回true。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vs2019能写Java吗_Visual studio2019打包程序过程

要想打包visual studio中的程序我们需要用到setup用于自定义安装部署的项目方案。但是在VS2019中不见了,微软是有意废除安装项目的,合作了一个第三方的安装项目单独使用。我们可以从官网上把Visual Studio Installer 项目扩展下载下来。地址:…

java各个版本的特性_Java各个版本的新特性

原链接:http://blog.csdn.net/shareus/article/details/507361591.51.自动装箱与拆箱:2.枚举(常用来设计单例模式)  http://www.jb51.net/article/78351.htm3.静态导入4.可变参数5.内省1.61.Web服务元数据2.脚本语言支持3.JTable的排序和过滤4.更简单,…

java继承的终极奥义_java学习笔记12-继承

继承就是子类继承父类的特征和行为有时候单一划分某个类别并不能处理所有情况,某些类别下有明显不同的子类,这些子类虽然拥有类似的行为和属性,但是他们各自发生的这些行为的方式或者属性对某些结果的影响是不一样的,这就需要划分…

flink java 并行度_flink solt和并行度

简介Flink运行时主要角色有两个:JobManager和TaskManager,无论是standalone集群,flink on yarn都是要启动这两个角色。JobManager主要是负责接受客户端的job,调度job,协调checkpoint等。TaskManager执行具体的Task。Ta…

php中多选提交如何获取,php中checkbox值获取,显示,多选值获取

php教程中checkbox值获取,显示,多选值获取最简单checkbox获取值代码checkboxdemocheckboxdemodemonstrates checkboxes"handleformcheckbox.php">"11.00">fries"chksoda" value "12.85">soda"ch…

php对mysql的操作教程,php与Mysql的一些简单的操作

先贴代码复制代码 代码如下:数据库相关$con mysql_connect("localhost","root","root"); //链接数据库if(!$con){die(连接失败! . mysql_error()); //判断是否成功}/* if(mysql_query("CREATE DATABASE testdb&qu…

php curl curlopt_getfields,PHP中CURL的CURLOPT_POSTFIELDS参数使用细节

核心提示:CURL确实是一个不错的好工具,不仅在PHP中还是其他的操作系统中,都是一个非常好用的。但是如果你有些参数没有用好的话,那可能会得不到自己理想中的结果。CURL确实是一个不错的好工具,不仅在PHP中还是其他的操…

java 写传奇游戏吗,文字版传奇游戏

学习java中IO操作自己写的一个小文字游戏,写了一天半两千多行,有点low的,因为没有使用到数据库,所以数据存放在文本文档中,大部分代码都是在处理往文档中读写内容, 就显得有些繁琐,主要锻炼了自…

【Dart】P0 Win、Mac 使用与安装

Dart 使用与安装 Dart 下载安装Windows 版本MacOS版本处于境外安装 Dart 开发工具 Dart 下载安装 Windows 版本 安装网址: http://gekorm.com/dart-windows/ 安装后测试: dart --versionMacOS版本 首先安装 Homebrew: 终端输入&#xff…

php 邮箱开发教程,php开发中表单验证邮箱及URL的教程

这篇文章讲述的是php开发中表单验证邮箱及URL的教程。下面是小编整理于php培训班的笔记,希望学过的同学可以能够起到回顾作用。同时也能帮助没有接触到的同学。PHP 表单验证 - 验证 E-mail 和 URLPHP 表单必填PHP 表单完成本节展示如何验证名字、电邮和 URL。PHP - …

matlab函数算错,函数是这个样子的,我是不懂应该怎么输入,试了好多种情况都是错...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼函数全部如下:function [Graph,varargout] GraphLoad(FileName,IndexFileName,SkipSqueeze,varargin)% Loads a graph from file%% Receives:% FileName - string - the file to load% Nx2 of integers - the actual l…

defaultdict python3,Python collections.defaultdict() 与 dict的使用和区别|python3教程|python入门|python教程...

https://www.xin3721.com/eschool/python.html在Python里面有一个模块collections,解释是数据类型容器模块。这里面有一个collections.defaultdict()经常被用到。主要说说这个东西。综述:这里的defaultdict(function_factory)构建的是一个类似dictionary…

matlab 当已知两个矩阵满足分别一定条件时_程序继续执行,MATLAB程序设计基础

2.1常量与变量2.1.1 特殊常量变量名功 能 说 明ANS(ans)缺省变量名,以应答最近一次操作运算结果i或j虚数单位Pi圆周率NaNNot-a-number,表示不定值tic秒表开始执行INF(inf)代表无穷大toc秒表停止Date日历Clock时钟2.1.2一般变量变量命名遵守的原则:1、 变…

java 四人帮,Java PatternDesign of GOF(四人帮巨著,享誉15年)第十五模式

Java PatternDesign of GOF(四人帮力作,享誉15年)第十五模式Java PatternDesign of GOF(四人帮力作,享誉15年)第十五模式板桥里人 http://www.jdon.com 2002/04/21(转载请保留)Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求reque…

php火车订票系统设计论文,基于JSP的火车票订票系统 JSP146(毕业设计+论文)

摘 要随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分使用计算机对火车信息进行管理,具有手工管理所无法比拟…

php cachelock,巧用lock解决缓存击穿的解决方案

背景缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。解决方案1、设置热点数据永远不过期…

nginx php 防止跨站,Nginx下多网站单独php-fpm进程目录权限防跨站

Nginx下开多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问。先了解一下网站正常运行所用到的用户、目录权限:Nginx进程运行用户:接…

php wmi,window_Win7系统中的wmi控件是什么?有什么用?,  wmi控件是什么Windows - phpStudy...

Win7系统中的wmi控件是什么?有什么用?wmi控件是什么Windows Management Instrumentation (WMI) 控件是一种工具,可以用它配置远程计算机或本地计算机上的 WMI 设置。wmi控件功能1、备份储存库可以配置 WMI 控件以定期备份 WMI 储存库&#xf…

php使用aes256加密,PHP中的AES-256加密

看看mcrypt moduleAES-Rijndael的例子取自here$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);$iv mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);$key pack(H*, "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");#…

mysql 目录更改 php,Linux下更改MySQL目录

MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步: 1、home目录下建立da更改MySQL目录MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:1、home目录下建立data…