巩固Javascript基础。有六种基本类型:null、undefined、boolean、number、string、symbol。基本类型的值是存储在栈内存中的一个简单数据段。基本类型最重要的特点是基本类型是不变的。因此:基本类型没有拼接、排序等直接改变变量的方法。强行改变基本类型会报错//strcannotcallArray的排序和拼接Array.prototype.sort.call('strxyz');//未捕获的类型错误:无法分配给对象“[objectString]”的只读属性“2”Array.prototype。splice.call('strxyz');//UncaughtTypeError:Cannotassigntoreadonlyproperty'length'ofobject'[objectString]'//对象可以使用数组的排序和拼接Array.prototype.sort.call({x:1,y:2});//{x:1,y:2}Array.prototype.splice.call({x:1,y:2});//[]基本类型没有__proto__没有属性str.x=1;控制台日志(str.x);//undefined当你调用`str.length`时,所有对底层类型属性的访问都是对基本包装类型(String、Number、Boolean)的访问,实际过程是这样的:->创建一个String类型的实例->调用实例上的指定方法->销毁此实例varstr='abc';var_str=新字符串(str);varlen=_str。长度;_str=空;控制台日志(len);其他特性typeofnull==='object'(历史遗留问题,因为000开头表示一个对象,null全为0)undefinednullfalseNaN''条件判断中的0-0为false,其他为true(判断条件时会隐式转换改为boolean)JS只有浮点型(double),没有整型1===1.0NaN也属于number型,NaN不等于自己vara=NaN;a!==a;StringtypeisaclassarraywithiteratortypeofString('x')[Symbol.iterator]==='function'基本类型检测使用typeof检测基本类型//typeof只适合检测基本类型typeofnewDate()//'object'typeof[]//'object'typeof{}//'object'typeofconsole.log//'function'基本类型转换转换基本类型时,先调用valueOf,然后调用字符串。并且这两个方法可以被覆盖。变量a=1;变量对象={x:1};obj.toString==='[对象对象]';变量arr=[2,3];arr.toString()==='2,3';a+obj==='1[object对象]';a+arr==='12,3';Symbol.toPrimitive该方法在转换为原始类型时调用优先级最高。让a={valueOf(){返回1;},toString(){返回'2';},[Symbol.toPrimitive](){返回3;}}1+a//=>4四次算术运算中的四次算术运算除了'+',其他运算都会用数字来计算。如果是+操作,如果不是所有的字面量都是数字,那么就会转为字符串(toString)进行拼接。完结不断更新中,更多资料在Github,你的?是我最大的支持。检查细节,
