一个自定义可扩展的检测变量的函数typeofIt();
自定义方法typeofIt()是用来判断传入的变量或属性是什么类型的;
1.如果是基础类型变量则返回代表基础变量类型小写格式的字符串及一些简易说明;
2.如果是对象类型变量则返回结尾带有"Object"的引用类型的字符串;其中越基础的引用类型越放后面,用空格分隔相邻的引用类型名称;
以下为代码:
function typeofIt(variable){
if(typeof variable == "undefined"){
try{
if(variable === undefined){
return "undefined--->基础数据类型中的未定义属性undefined";
}
}catch(err){
var theErrer = "noFined undefined" + "报错代码:" + err;
console.log("%c开始一行的打印:","color:rgb(0,0,255);"," \n函数typeofIt中报错语句变量theErrer--->",theErrer);
return "noFined undefined--->基础数据类型中的未定义变量undefined";
}
}
if(typeof variable == "number"){
return "number--->基础数据类型中的数字number";
}
if(typeof variable == "string"){
return "string--->基础数据类型中的字符串string";
}
if(typeof variable == "boolean"){
return "boolean--->基础数据类型中的布尔值boolean";
}
if(typeof variable == "object"){
if(variable == undefined){
return "null--->基础数据类型中的空值null";
}
}
if(variable instanceof Object){
if(variable instanceof Boolean){
return "Boolean Object--->复杂数据类型中的对象Object中的布尔引用类型Boolean";
}
if(variable instanceof Number){
return "Number Object--->复杂数据类型中的对象Object中的数字引用类型Number";
}
if(variable instanceof String){
return "String Object--->复杂数据类型中的对象Object中的字符串引用类型String";
}
if(variable instanceof Array){
return "Array Object--->复杂数据类型中的对象Object中的数组引用类型Array";
}
if(variable instanceof Function){
return "Function Object--->复杂数据类型中的对象Object中的函数引用类型Function";
}
if(variable instanceof Date){
return "Date Object--->复杂数据类型中的对象Object中的日期时间引用类型Date";
}
if(variable instanceof RegExp){
return "RegExp Object--->复杂数据类型中的对象Object中的正则表达式引用类型RegExp";
}
if(variable instanceof Error){
if(variable instanceof EvalError){ //为[eval错误错误引用类型EvalError]时执行;
return "EvalError Error Object--->复杂数据类型中的对象Object中的错误引用类型Error中的[eval错误错误引用类型EvalError]";
}
if(variable instanceof RangeError){
return "RangeError Error Object--->复杂数据类型中的对象Object中的错误引用类型Error中的[范围错误错误引用类型RangeError]";
}
if(variable instanceof ReferenceError){
return "ReferenceError Error Object--->复杂数据类型中的对象Object中的错误引用类型Error中的[参考错误错误引用类型ReferenceError]";
}
if(variable instanceof SyntaxError){
return "SyntaxError Error Object--->复杂数据类型中的对象Object中的错误引用类型Error中的[语法错误错误引用类型SyntaxError]";
}
if(variable instanceof TypeError){
return "TypeError Error Object--->复杂数据类型中的对象Object中的错误引用类型Error中的[类型错误错误引用类型TypeError]";
}
if(variable instanceof URIError){
return "URIError Error Object--->复杂数据类型中的对象Object中的错误引用类型Error中的[URL错误错误引用类型URIError]";
}
return "Error Object--->复杂数据类型中的对象Object中的基础可自定义错误引用类型Error"; //为基础可自定义错误引用类型Error时执行; //因为上方中其它的判断不是了,故而一般就只能是基础可自定义错误引用类型Error;
}
return "Object--->复杂数据类型中的基础可自定义对象Object"; //为基础可自定义对象Object时执行; //因为上方中其它的判断不是了,故而一般就只能是自定义对象类型Object;
}
}
一个自定义可扩展的检测变量的函数typeofIt();的更多相关文章
- Spring中自定义Schema扩展机制
一.前言 Spring 为基于 XML 构建的应用提供了一种扩展机制,用于定义和配置 Bean. 它允许使用者编写自定义的 XML bean 解析器,并将解析器本身以及最终定义的 Bean 集成到 S ...
- 手写面试编程题- 数组去重 深拷贝 获取文本节点 设置奇数偶数背景色 JS中检测变量为string类型的方法 第6题闭包 将两个数组合并为一个数组 怎样添加、移除、移动、复制、创建和查找节点? 继承 对一个数组实现随机排序 让元素水平 垂直居中的三种方式 通过jQuery的extend方法实现深拷贝
第1题==>实现数组去重 通过 new Set(数组名) // var arr = [12, 12, 3, 4, 5, 4, 5, 6, 6]; // var newarr1 = new Set ...
- CKEditor在线编辑器增加一个自定义插件
CKEditor是一个非常优秀的在线编辑器,它的前身就是FCKEditor,CKEditor据官方说是重写了内核的,但功能和性能比FCKEditor更为强大和优越.记得07年的时候第一次接触FCKEd ...
- 如何创建一个自定义jQuery插件
简介 jQuery 库是专为加快 JavaScript 开发速度而设计的.通过简化编写 JavaScript 的方式,减少代码量.使用 jQuery 库时,您可能会发现您经常为一些常用函数重写相同的代 ...
- 如何开始一个模块化可扩展的Web App(转)
原文链接:http://avnpc.com/pages/start-a-modular-extensible-webapp 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性 ...
- LESS是一个CSS预处理器,跨浏览器友好,提供诸如变量,函数, mixins 和操作等功能,可以构建动态CSS
什么是LESS? LESS是一个CSS预处理器,可以为网站启用可自定义,可管理和可重用的样式表. LESS是一种动态样式表语言,扩展了CSS的功能. LESS也是跨浏览器友好. CSS预处理器是一种脚 ...
- Scheme语言实例入门--怎样写一个“新型冠状病毒感染风险检测程序”
小学生都能用的编程语言 2020的春季中小学受疫情影响,一直还没有开学,孩子宅在家说想做一个学校要求的研究项目,我就说你做一个怎么样通过编程来学习数学的小项目吧,用最简单的计算机语言来解决小学数学问题 ...
- 【SpringBoot 基础系列】实现一个自定义配置加载器(应用篇)
[SpringBoot 基础系列]实现一个自定义配置加载器(应用篇) Spring 中提供了@Value注解,用来绑定配置,可以实现从配置文件中,读取对应的配置并赋值给成员变量:某些时候,我们的配置可 ...
- 如果你想深刻理解ASP.NET Core请求处理管道,可以试着写一个自定义的Server
我们在上面对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了详细介绍(<聊聊ASP.NET Core默认提供的这个跨平台的服务器——KestrelServer& ...
- Javascript学习笔记:3种检测变量类型的方法
①typeof检测变量类型 console.log(typeof 1);//number console.log(typeof "a");//string console.log( ...
随机推荐
- Nginx双层域名时 iframe嵌入/跳转页面的处理过程
Nginx双层域名时 iframe嵌入/跳转页面的处理过程 背景 两年前在上一家公司内遇到一个Nginx的问题 当时的场景是 双层nginx代理时(一层域名侧, 一层拆分微服务的网关层) 程序里面会打 ...
- [转帖]Kafka-LEO和HW概念及更新流程
https://www.cnblogs.com/youngchaolin/p/12641463.html 目录 LEO&HW基本概念 LEO&HW更新流程 LEO HW 更新流程示例分 ...
- 【转帖】纳尼,mysqldump导出的数据居然少了40万?
0.导读 用mysqldump备份数据时,加上 -w 条件选项过滤部分数据,发现导出结果比实际少了40万,什么情况? 本文约1500字,阅读时间约5分钟. 1.问题 我的朋友小文前几天遇到一个怪事,他 ...
- Linux上面Shell简单进行数值计算的办法
1. 自己简单写了一个脚本 来计算 一个服务进程启动的耗时, 精度要求不高 10秒上下就可以. 在程序执行之前和之后的处理 在最前面设置一句time1=`date +%s`在末尾一句设置time2=` ...
- awk的简单样例
shell awk求和 当第一列相同时,对应的第二列相加 awk'{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}'输入文件名 在Shell中,我们可以用 ...
- UOS关闭激活提示: Your system is not activated. Please activate as soon as possible for normal use.
最近公司里面进行UOS的兼容性验证,但是系统总是会提示: Your system is not activated. Please activate as soon as possible for n ...
- 简单监控Tomcat连接池大小的命令以及其他简单命令
while true ; do date && echo "当前数据库连接池大小为:" $(jmap -histo `jps |grep caf |awk '{pr ...
- elemetui-中在input框中回车
在input框中回车 <el-input @keyup.enter.native="gotoLogin" class="my-el-input" plac ...
- c#通过表达式树优雅的实现分组取TopN笔记
需要引入nuget包来实现ef.functions调用row_number Thinktecture.EntityFrameworkCore.SqlServer 调用方式: //顺排 context. ...
- TienChin 渠道管理-字典原理分析
在上一节当中,我们使用到了字典来进行翻译我们的渠道类型等等字段,那么这一节我们就来分析一下字典的原理. 从代码方面先开始分析,我们先来看一下字典的定义,我们是在如下图当中编写了我们的渠道类型,使用,p ...