JS中判断字符串存在和非空的方法


Posted in Javascript onSeptember 12, 2018

看到这个题目你是怎么想的呢?这个很简单啊,typeof 一下,再判断length。

if(typeof unknownVariable ==='string' && unknownVariable.length){
   ...
 }

搞定了吗?

如果这个字符串是用new String() 创建的会如何呢?typeof 这个未知变量肯定是 object。你会怎么办?
你肯定还得先判断类型,typeof unknownVariable==='object' ?但你得想还有一个null变量的 typeof 值也是 object。那是不是还得 && unknownVariable 一下?现在就是一个非空对象了,接着要不要判断一下length?应该不用了。但最后 typeof 是 object 的不一定是字符串对象啊,可以是别的对象,如数组、json对象、new 出来的别的对象等等。要怎么办呢?

这就要上一个很少用到但有用的方法了:valueOf。valueOf 会以变量原始类型的形式进行输出。

let str1="test"
  let str2=new String('test2')
  let arr1=[1,2,3]
  let fn1=function(){
    console.log('this is a function')
  }
  let obj1={
    name:'gpd'
  }
  let obj2=new Object()
  obj2.name='gpd' 
  str1.valueOf() // "test"
  str2.valueOf() //"test2"
  arr1.valueOf() //[1,2,3]
  fn1.valueOf() //fn1(){}
  obj1.valueOf() // {name:"gpd"}
  obj2.valueOf() // {name:"gpd"}

所以,无论你是字符串字面量还是new String 得到的一个字符串对象,它的valueOf值都是一个字符串字面量。然后,它的typeof 值都是 string 。

所以最后的判断的是

if(typeof unknownVariable !=undefined 
  && unknownVariable 
  && typeof unknowVariable.valueOf() === "string")
  {
    ...
  }
Javascript 相关文章推荐
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
Jan 15 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
Nov 25 Javascript
jQuery.holdReady()方法用法实例
Dec 27 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
Dec 13 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
微信小程序 Image API实例详解
Sep 30 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
Dec 01 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
如何用js判断dom是否有存在某class的值
Feb 13 Javascript
AngularJS日期格式化常见操作实例分析
May 17 Javascript
关于JavaScript中异步/等待的用法与理解
Nov 18 Javascript
React router动态加载组件之适配器模式的应用详解
Sep 12 #Javascript
微信小程序实现tab左右切换效果
Nov 15 #Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 #Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 #Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 #Javascript
vue中的watch监听数据变化及watch中各属性的详解
Sep 11 #Javascript
vue axios数据请求get、post方法及实例详解
Sep 11 #Javascript
You might like
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
php中的ini配置原理详解
2014/10/14 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
Webpack打包css后z-index被重新计算的解决方法
2017/06/18 Javascript
详解Vue2中组件间通信的解决全方案
2017/07/28 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
Python如何实现MySQL实例初始化详解
2017/11/06 Python
简单了解python数组的基本操作
2019/11/26 Python
Java ExcutorService优雅关闭方式解析
2020/05/30 Python
python 绘制正态曲线的示例
2020/09/24 Python
Python日志器使用方法及原理解析
2020/09/27 Python
HTML5 通信API 跨域门槛将不再高、数据推送也不再是梦
2013/04/25 HTML / CSS
手工制作的豪华英式沙发和沙发床:Willow & Hall
2019/05/03 全球购物
数控技术学生的自我评价
2014/02/15 职场文书
行政部岗位职责范本
2014/03/13 职场文书
幼儿教师自我剖析材料
2014/09/29 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
利用JavaScript写一个简单计算器
2021/11/27 Javascript
正则表达式拆分url实例代码
2022/02/24 Java/Android