bob体育官方平台
JS数据类型运算符和流程控制语句

最近对javascript数据类型的验证又有了一个新的认识,原来可以判断得这么简单又如此全面。我们自定义了isString,isNumber ,isDate ,isError ,isRegExp ,isBoolean ,isNull ,isUndefined ,isObject等方法。现在将自己定义的javascript数据类型验证函数及测试集展示:

js定义了几种数据类型?哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?

JS定义了以下几种数据类型:

  • string
  • number
  • boolean
  • null
  • undefined
  • object

其中string、number、boolen是原始数据类型;null、undefined、object是复杂数据类型。

他们自己的区别在于,原始数据类型是最基本的数据类型,不能再细分了,而将对象称为合成类型的值,因为一个对象往往是多个原始数据类型的值的合成,可以看作是一个存放各种值得容器。而undefinednull,一般将他们两个看成特殊值

        //isString //isNumber //isDate //isError //isRegExp //直接利用和数据类型来判断 [].forEach.call(['String','Number','Date','Error','RegExp'],function{ this['is'+name]=function{ return toString.call==='[object '+name+']'; }; }); //isBoolean //true和false需要考虑在内 Object.prototype.isBoolean=function{ return obj===true||obj===false||toString.call==='[object Boolean]'; }; //isNull //未找到所指向对象 Object.prototype.isNull=function{ return obj===null; }; //isUndefined //定义了但是未赋值 Object.prototype.isUndefined=function{ return obj===void 0; }; //isObject //函数和数组都是对象 Object.prototype.isObject=function{ var type = typeof obj; return type === 'function' || type === 'object' && !!obj; }; //test //isString var str="iamstring"; var a=isString;//true //isNumber var b=isNumber;//false //isNumber var num=4; var c=isNumber;//true //isRegExp var reg=/^[1-9]/; var d=isRegExp;//true //isDate var date=new Date; console.log;//true //isBoolean var bool=false; var f=isBoolean;//true //isNull var nul=document.getElementById; var g=isNull;//true //isUndefined var undef; var h=isUndefined; console.log;//true //isObject var obj={"1":"1","2":"2"}; var i=isObject;//true   

typeofinstanceof的作用和区别?

typeof作为一个运算符,用于确定一个值是什么数据类型,由于它可以用来检查一个没有声明的变量,而不报错,实际编程中通常用在判断语句。

//错误的写法
if(v) {
  //...
}
// ReferenceError: v is not defined

//正确的写法
if (typeof v === "undefined") {
  ...
}

instanceof主要用来验证指定的对象是否为某个构造函数的实例

比如可以用验证数组

>var a = {}
>var b = []
<undefined
>typeof a
<"object"
>typeof b
<"object"
>a instanceof Array
<false
>b instanceof Array
<true

typeofinstanceof都输出javascript中用来验证类型的运算符,这种运算符有3个:

  • typeof
  • instanceof
  • Object.prototype.toString

以下主要是对判断javascript的数据类型进行了详细的介绍,分为六种数据类型,需要的朋友可以过来参考下,希望对大家有所帮助1、判断是否为数组类型代码如下:

如何判断一个变量是否是数字、字符串、布尔、函数?

判断数字 typeof a === "number"
判断字符串 typeof a === "string"
判断布尔 typeof a === "boolean"
判断函数 typeof a === "function"

 //&lt;![CDATA[ var a=[0]; document.write; function isArray{ return &amp;&amp;obj.constructor==Array; } //]]&gt; 

NaN是什么?有什么特别之处?

NaN是javascript的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

NaN不是一种独立的数据类型,而是一种特殊数值,它的数据类型依然属于Number

它的特别之处在于它不等于任何值,包括它自身。

NaN === NaN  // false

它与任何数(包括它自己)的计算,得到的都是NaN。

2 判断是否为字符串类型代码如下:

如何把非数值转化为数值?

转换为数值 Number()

转换为整值 parseInt('123')

转换为浮点数 parseFloat('123')

 //&lt;![CDATA[ document.write,'&lt;br/&gt;'); document.write; function isString{ return &amp;&amp;str.constructor==String; } //]]&gt; 

=====有什么区别?

两者都是javascript提供的相等运算符,这里将 ==称为相等运算符, ===称为严格相等运算符

==是比较两个值是否相等,而 ===比较它们是不是同一个值。如果两个值不是同一个类型,严格相等运算符( === )会直接返回 false,而相等运算符 ( == )会将它们转化为同一个类型,再用严格相等运算符进行比较。

3 判断是否为数值类型代码如下:

break与continue有什么区别?

break 用于强制退出循环体,执行循环后面的语句.

continue 用于退出本次循环,执行下次循环

void 0undefined在使用场景上有什么区别?

在函数计算的时候,undefined可能会被覆盖,不过void不会,它的计算结果一直都是undefined

 //&lt;![CDATA[ document.write,'&lt;br/&gt;'); document.write; function isNumber{ return &amp;&amp;obj.constructor==Number; } //]]&gt; 

以下代码输出的结果是什么?为什么?

console.log(1+1); 
console.log("2"+"4");
concole.log(2+"4");
concole.log(+"4");

输出结果:

console.log(1+1);     //2  加法计算
console.log("2"+"4"); //"24"  字符串拼接
concole.log(2+"4");   // "24"  参数中有数字、字符串,运算是数字被转为字符串
concole.log(+"4");    // 4     参数中只有一字符串参数,将其转换为数字
返回顶部