javascript 的基础范例 和 与操作符结应时的范例转换

javascript 的基础范例

javascript的基础范例和范例转换体系相较于其他言语比方 Java 来讲能够说是异常杂沓的.这个是许多新手必定会碰到的坑.起首javascript 有五种简朴的基础范例(undefined,null,Number,Boolean,String).和一种庞杂的数据范例object.

范例检测有两种体式格局 typeof 和 instanceof .

instanceof用来检测对象的原型链. 但有时刻 instanceof 也会不好用比方差别window.frames[0]里的 Array检测,关于已完成了 toString 要领的范例,我们能够用Object.prototype.toString.call(obj) 来检测,获得效果相似[object Array].

typeof : 由于NaN属于 number 的一种所以 typeof NaN === ‘number’ ; 在javascript 里 Object,String等都是一种组织函数,所以 typeof Object === ‘function’,typeof String === ‘function’.
typeof 一切的检测效果以下:

TypeResult
Undefined“undefined”
Null “object”(see below)
Boolean“boolean”
Number“number”
String“string”
Symbol(new in ECMAScript 2015) “symbol”
Host object(provided by the JS environment) Implementation-dependent
Function object (implements [[Call]] in ECMA-262 terms)“function”
Any other object“object”

与操作符连系后的 javascript 范例转换

    弱范例的 javascript 的许多操作符会自动范例转换,许多时刻转换后的
    效果会让人受惊.下面我们来总结一下:

1. 尝试将两个变量转换为数值(挪用 Number())的操作符 :一元操作符 ++,–;乘性操作符 *,

    Number的转换规则是 
    1.1 假如是string:
        1.1.1 推断是否能转换为数值含有字母和其他非.标记的直接返回 
NaN ; 1.0 , .1 均能够转换为数值 ,.1.1含两个以上的不能转换为数值.
        1.1.2 能转换为数值的返回对应数值.
    1.2 假如是boolean:
        1.2.1 true 转换为0;
        1.2.2 false 转换为1;
    1.3 假如是 undefined: 转换为 NaN
    1.4 假如是 null 转换为 0
    1.5 假如是 Object var result = obj.valueof(); return Number(result) 假如获得 NaN,再挪用 toString

2. 尝试将两个变量转换为布尔值: 布尔操作符 !;前提操作符 ? :

    Boolean的转换规则是:
    2.1 假如是string: 空字符串''返回 false ,其他返回 true.(注重 new String('') 属于对象)
    2.2 假如是number: 0返回 false,其他 true
    2.3 undefined 和 null 返回 false
    2.4 object : 返回true

3. 先推断是要转换为哪一种基础范例,再做转换. 加性:+;前提>,<;非严厉相称 ==

3.1 加性 +,-

    3.1.1假如两个都是数值一般盘算 infinity,-infinity 和 +0,-0 略过..
    3.1.2假如两个都是字符串拼接.
    3.1.3假如只要一个是字符串,将另一个转换为字符串.
    3.1.4假如有一个是对象,尝试转换为字符串
    3.1.5假如两个都不是字符串,且个中一个是数值,将另一个转换为数值.
    3.1.6其他状况都是 NaN

3.2 前提 >,<

    3.2.1两个都是数值,数值比较
    3.2.2两个都是字符串,字符编码比较 (注重 A<a)
    3.2.3个中一个是 NaN ,false
    3.2.4个中一个是数值,转换另一个为数值
    3.2.5对象先尝试转换为数值,不可字符串再比较
    3.2.6布尔转换为数值.

3.3 不严厉相称 == 差别范例是

    3.3.1布尔值先转换为数值
    3.3.2一个是字符串,一个是数值.字符串转换为数值
    3.3.3对象挪用 valueof(),再比较
    3.3.4 == 有 NaN,就为 fasle ;!= 有 NaN ,就为 true
    3.3.5 undefined == null ,undefined 和 null 不会转换为其他范例举行比较.
    

4.if 语句 运用 Boolean()

部分内容来源于 :

Javascript 高等程序设计, MDN和收集

    原文作者:kukuv2
    原文地址: https://segmentfault.com/a/1190000003688282
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞