JS中的常量(基本数据类型)和内置对象
2017-01-05 10:37
453 查看
科技优家 2017-01-04 20:44
JS中的基本数据类型:
String 、number、null、boolean、undefined、object、symbol(ES6)
1、 利用typeof运算符时其中只有null是异常的,typeof(null)=object,所以在判断变量类型是否为null时要注意。同时利用typeof时对于没有声明的变量是不会报错的,返回值为undefined。全局变量和函数变量在没有声明时使用是会报错的,但是在对象中使用没有定义的属性是不会报错同样返回的是undefined。Function变量是具有length属性的,其长度为传入的参数的个数。
2、 变量时弱类型的,即其本身是没有类型的,其值才是具有类型的。
3、 对于number类型,
(1)其中要注意的是NAN非数字的数字,用全局的函数isNAN判断时会有问题,即对于非数字类型的变量其也会返回true,所以在使用时可以用以下方式判断NAN:
①a!=a
②利用ES6中的Number.isNAN;
③typeof(a)==’number’&&isNAN(a)
(2)还有一个要注意的是+0,-0这两者在使用时是相等的但是在浏览器引擎上还是会有区别,区分二者可以利用:typeof(a)==typeof(b)&&1/a==1/b,+0、-0作为分母时会得到infinite和-infinite。在ES6中有Object.is方法可用于判断两个变量是否相等。可用于上述情况。但是前者的方法的执行效率更好。
(3)另外在JS中数字类型也是有最大和最小值的界定的安全范围的
(4)判断变量是否为整数的方法:
①Number.isInteger(a),ES6中的方法
②typeof(a)==’number’&&a%1==0
③或者使用Mah.ceil(a)==a等类似的方法
4、变量在复制和作为参数传递时会有引用传递和值传递之分:
(1)值传递即普通的变量类型
(2)引用传递,如对象和数组等幅值或者作为参数传递传递的是复制的引用会相会影响:
Var a=[1,2,3];
Var b=a;
b.push(4);//a=[1,2,3,4];b=[1,2,3,4]
但是当b重新赋值时:
Var b=[4,5,6]//a=[1,2,3,4];b=[4,5,6]因为b的引用已经发生了改变不在是a数组的引用的复制。
JS中的内置函数
String、Number、Boolean、RegExp、Date、Error、Array、
Function、Object、symbol;类似于对象的构造函数
1、这些内置函数构造的变量都是封装了基本类型值的对象如:
Var a=new String(‘abb’); //typeof(a)=object
除了利用Function构造的变量通过typeof输出为function外其他均为object
2、为了知道构造的变量的真实类型可以利用:
Object.prototype.toString.call([1,2,3]);//”[object,array]”,后面的一个值即为传入参数的类型
3、如果有常量形式(即利用基本数据类型)赋值给变量就不要用该方式来定义变量
本文为头条号作者发布,不代表今日头条立场。
JS中的基本数据类型:
String 、number、null、boolean、undefined、object、symbol(ES6)
1、 利用typeof运算符时其中只有null是异常的,typeof(null)=object,所以在判断变量类型是否为null时要注意。同时利用typeof时对于没有声明的变量是不会报错的,返回值为undefined。全局变量和函数变量在没有声明时使用是会报错的,但是在对象中使用没有定义的属性是不会报错同样返回的是undefined。Function变量是具有length属性的,其长度为传入的参数的个数。
2、 变量时弱类型的,即其本身是没有类型的,其值才是具有类型的。
3、 对于number类型,
(1)其中要注意的是NAN非数字的数字,用全局的函数isNAN判断时会有问题,即对于非数字类型的变量其也会返回true,所以在使用时可以用以下方式判断NAN:
①a!=a
②利用ES6中的Number.isNAN;
③typeof(a)==’number’&&isNAN(a)
(2)还有一个要注意的是+0,-0这两者在使用时是相等的但是在浏览器引擎上还是会有区别,区分二者可以利用:typeof(a)==typeof(b)&&1/a==1/b,+0、-0作为分母时会得到infinite和-infinite。在ES6中有Object.is方法可用于判断两个变量是否相等。可用于上述情况。但是前者的方法的执行效率更好。
(3)另外在JS中数字类型也是有最大和最小值的界定的安全范围的
(4)判断变量是否为整数的方法:
①Number.isInteger(a),ES6中的方法
②typeof(a)==’number’&&a%1==0
③或者使用Mah.ceil(a)==a等类似的方法
4、变量在复制和作为参数传递时会有引用传递和值传递之分:
(1)值传递即普通的变量类型
(2)引用传递,如对象和数组等幅值或者作为参数传递传递的是复制的引用会相会影响:
Var a=[1,2,3];
Var b=a;
b.push(4);//a=[1,2,3,4];b=[1,2,3,4]
但是当b重新赋值时:
Var b=[4,5,6]//a=[1,2,3,4];b=[4,5,6]因为b的引用已经发生了改变不在是a数组的引用的复制。
JS中的内置函数
String、Number、Boolean、RegExp、Date、Error、Array、
Function、Object、symbol;类似于对象的构造函数
1、这些内置函数构造的变量都是封装了基本类型值的对象如:
Var a=new String(‘abb’); //typeof(a)=object
除了利用Function构造的变量通过typeof输出为function外其他均为object
2、为了知道构造的变量的真实类型可以利用:
Object.prototype.toString.call([1,2,3]);//”[object,array]”,后面的一个值即为传入参数的类型
3、如果有常量形式(即利用基本数据类型)赋值给变量就不要用该方式来定义变量
本文为头条号作者发布,不代表今日头条立场。
相关文章推荐
- JS中的常量(基本数据类型)和内置对象
- JS中的常量(基本数据类型)和内置对象
- H5---js有哪些内置对象?和介绍js的基本数据类型
- JS-安全检测JavaScript基本数据类型和内置对象的方法
- js--3.对象-2.基本和引用数据类型
- 安全检测JavaScript基本数据类型和内置对象
- JS--我发现,原来你是这样的JS(引用类型不简单[下篇],基本包装类型与个体内置对象)
- 49 JS-3 function 对象,基本数据类型 对象的定义 匿名函数
- JS基本数据类型与对象的valueOf方法
- Python--前端基础之JavaScript(JS的引入方式,JS的变量、常量和标识符,JS的数据类型,运算符,流程控制,JavaScript的对象)
- The New C++ -- 基本数据类型和字面值常量 (8. 字符串字面值常量)
- JAVA API系列----基本数据类型的对象包装类
- Lu基于系统内置对象创建扩展数据类型,小矩阵乘效率测试
- The New C++ -- 基本数据类型和字面值常量 (3. sizeof表达式和typeid表达式)
- 基本数据类型和对象
- [Python学习第一天]内置数据类型介绍,万物皆对象!
- Js从头学起(详细分析基本数据类型和引用类型的参数传递)
- JAVA高级01_04 基本数据类型的对象包装类 2011-4-20
- The New C++ -- 基本数据类型和字面值常量 (4. 字符型和字符字面值常量)
- 6.3 基本数据类型的对象包装类