Front End - Data type continuously updated collection

1. Non-Type and Number Number comparing

把非Number类型隐式转化为Number类型

"10" >9       //true   

字符串10在和Number类型比较时会被隐式转化成Number类型

2. comparing strings from

字符串与字符串比较比的是ACSII码值

console.log("我" > "你")    //返回true   

在ACSII码表里面我的数值要比你的数值大一些

3. comparison operator ==

两边类型相同  可以直接进行比较

NaN == NaN   //返回false

两边类型不同   需要把非Number类型隐式转化为Number类型
"10" == 10   //返回true

4.===

如果两边类型不同直接返回false

The mentioned three kinds of casts and 2 implicit type conversions

parseInt()			//parseInt() 函数可解析一个字符串,并返回一个整数
parseFloat()		//parseFloat() 函数可解析一个字符串,并返回一个浮点数
Number()			//Number() 函数把对象的值转换为数字

== 
+

6.JS which data type of the return typeof

基本数据类型:String,boolean,Number,Undefined, Null,; 

引用数据类型:Object(Array,Date,RegExp,Function)

7. How to determine whether a variable is an array data type

使用Array.isArray

​	if(typeof Array.isArray==="undefined")
{
  Array.isArray = function(arg){return Object.prototype.toString.call(arg)==="[object Array]"};  
}

8. The difference of undefined data type and -null

    null是一个表示"无"的对象,转为数值时为0;
    undefined是一个表示"无"的原始值,转为数值时为NaN。



    当声明的变量还未被初始化时,变量的默认值为undefined。 
    null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。
    undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。

典型用法是:

    (1)变量被声明了,但没有赋值时,就等于undefined。
    (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
    (3)对象没有赋值的属性,该属性的值为undefined。
    (4)函数没有返回值时,默认返回undefined。

    null表示"没有对象",即该处不应该有值。

典型用法是:

    (1) 作为函数的参数,表示该函数的参数不是对象。
    (2) 作为对象原型链的终点

    undefined   表示不存在这个值。
    typeof undefined //"undefined"
    undefined :是一个表示"无"的原始值或者说表示"缺少值",就是此处应该有一个值,
    但是还没有定义。当尝试读取时会返回 undefined;
    例如变量被声明了,但没有赋值时,就等于undefined
    typeof null //"object"
    null        表示一个对象被定义了,值为“空值”;
    null : 是一个对象(空对象, 没有任何属性和方法);
    例如作为函数的参数,表示该函数的参数不是对象;

    注意:
    在验证null时,一定要使用 === ,因为 == 无法分别 null 

9. Introduction of basic data types js

Boolean Number String  Undefined Null

JavaScript有几种类型的值?,你能画一下他们的内存图吗

栈:原始数据类型(Undefined,Null,Boolean,Number、String)
堆:引用数据类型(对象、数组和函数)

10. The method of determining what type of use

typeof
instanceof

11. Presentation of built-in objects which js

Object 是 JavaScript 中所有对象的父对象  

数据封装类对象:Object、Array、Boolean、Number 和 String    

其他对象:Function、Arguments、Math、Date、RegExp、Error

12. How to distinguish arrays and objects

1、从原型入手,Array.prototype.isPrototypeOf(obj);  
利用isPrototypeOf()方法,判定Array是不是在obj的原型链中,
如果是,则返回true,否则false。Array.prototype.isPrototype([]) //true

2、也可以从构造函数入手,利用对向的constructor属性

3、根据对象的class属性(类属性),跨原型链调用toString()方法。
Object.prototype.toString.call(Window);

4、Array.isArray()方法

13. The method of determining what type of use

typeof

typeof xxx得到的值有以下几种类型:
undefined boolean number string object function、symbol ,
这里需要注意的有三点:

 typeof null结果是object ,
 实际这是typeof的一个bug,null是原始值, 非引用类型
 typeof [1, 2]结果是object,结果中没有array这一项,
 引用类型除了function其他的全部都是object
 typeof Symbol() 用typeof获取symbol类型的值得到的是symbol,
 这是 ES6 新增的知识点

instanceof

用于实例和构造函数的对应。例如判断一个变量是否是数组,使用typeof无法判断,
但可以使用[1, 2] instanceof Array来判断。因为,[1, 2]是数组,
它的构造函数就是Array。
同理:
function Foo(name) {
   this.name = name
}
var foo = new Foo('bar’)
console.log(foo instanceof Foo) // true

There are several types of value 14.JavaScript draw about their memory map

栈:原始数据类型(Undefined,Null,Boolean,Number、String)

堆:引用数据类型(对象、数组和函数)

 

两种类型的区别是:存储位置不同;

1,原始数据类型直接存储在栈(stack)中的简单数据段,占据空间小、大小固定,
属于被频繁使用数据,所以放入栈中存储;

2,引用数据类型存储在堆(heap)中的对象,占据空间大、大小不固定,如果存储在栈中,
将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址
当解释器寻找引用值时,会首先检索其在栈中的地址,取得地址后从堆中获得实体

 

在参数传递方式上,原始类型是按值传递,引用类型是按共享传递

 

JS 中这种设计的原因是:按值传递的类型,复制一份存入栈内存,
这类类型一般不占用太多内存,而且按值传递保证了其访问速度。按共享传递的类型,
是复制其引用,而不是整个复制其值(C 语言中的指针),
保证过大的对象等不会因为不停复制内容而造成内存的浪费。

15. The difference between == and ===

 1.===:三个等号我们称为等同符,当等号两边的值为相同类型的时候,直接比较等号两边的值,值相同则返回true,若等号两边的值类型不同时直接返回false。

     例:

100=“100”   //返回false
abc=“abc”   //返回false
 ‘abc’=“abc”  //返回true
NaN=NaN   //返回false
 false===false  //返回true

2.==:两个等号我们称为等值符,当等号两边的值为相同类型时比较值是否相同,类型不同时会发生类型的自动转换,转换为相同的类型后再作比较。
类型转换规则:

1)如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
 2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等
     例:

 100“100”    //返回true
 1true          //返回true
“1”“01”      //返回false,此处等号两边值得类型相同,不要再转换类型了!!
 NaNNaN  //返回false,NaN和所有值包括自己都不相等。 

     ==比较规则:
     数组与数值进行比较,会先转成数值,再进行比较;
     与字符串进行比较,会先转成字符串,再进行比较;
     与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较。



    相等运算符(==)隐藏的类型转换,会带来一些违反直觉的结果,下面整理一些:
    
    0 == ''             // true
    0 == '0'            // true
     
    2 == true           // false
    2 == false          // false
     
    false == 'false'    // false
    false == '0'        // true
     
    false == undefined  // false
    false == null       // false
    null == undefined   // true
     
    ' \t\r\n ' == 0     // true
    \t \r \n都是转义字符,空格就是单纯的空格,输入时可以输入空格
Published 68 original articles · won praise 0 · Views 1283

Guess you like

Origin blog.csdn.net/zmmsdk/article/details/104201173