js数据类型

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <title>数据类型</title>
  8 </head>
  9 <body>
 10     <script>
 11         /*
 12             JavaScript 数据类型
 13         */
 14         /*
 15             1.值类型(基本类型):(6种)存在栈中,按值访问,操作的是他们实际保存的值;
 16                 1.1 字符串(String)
 17                 1.2 数字(Number)
 18                 1.3 布尔(Boolean)
 19                 1.4 对空(Null)
 20                 1.5 未定义(Undefined)
 21                 1.6 Symbol (Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。)
 22             2.引用数据类型:栈中保存地址,堆中保存值,按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再顺藤摸瓜地找到保存在堆内存中的值;
 23             
 24             引用数据类型主要用于区别基本数据类型,描述的是具有属性和函数的对象。
 25             常用的有Object类型、Array类型、Date类型、RegExp类型、Math类型、Function类型以及基本数据类型的包装类型(Number、String......)
 26 
 27                 2.1 对象(Object)
 28                 2.2 数组(Array)
 29                 2.3 函数(Function)
 30                 2.4 日期(Date)
 31                 2.5 基本数据类型包装类型(Number、String......)
 32         */
 33         
 34         //1.值类型(基本类型):(6种)
 35             //1.1 字符串(String)
 36                 /*
 37                     String 类型的独特之处在于,它是唯一没有固定大小的原始类型。
 38                     可以用字符串存储 0 或更多的 Unicode 字符,有 16 位整数表示(Unicode 是一种国际字符集)。
 39                 */
 40                 var sColor1 = "red";
 41                 var sColor2 = 'red';
 42                 console.log(typeof(sColor1))//string
 43                 console.log(typeof(sColor2))//string
 44             //1.2 数字(Number)
 45                 /*
 46                     ECMA-262 中定义的最特殊的类型是 Number 类型。
 47                     这种类型既可以表示 32 位的整数,还可以表示 64 位的浮点数。
 48                 */
 49                //a、十进制
 50                     var iNum = 86;
 51                     console.log(typeof(iNum))//number
 52                //b、八进制数和十六进制数
 53                     /*
 54                         整数也可以被表示为八进制(以 8 为底)或十六进制(以 16 为底)的字面量。
 55                         八进制字面量的首数字必须是 0,其后的数字可以是任何八进制数字(0-7)
 56 
 57                         要创建十六进制的字面量,首位数字必须为 0,后面接字母 x,然后是任意的十六进制数字(0 到 9 和 A 到 F)。
 58                         这些字母可以是大写的,也可以是小写的。
 59 
 60                         提示:尽管所有整数都可以表示为八进制或十六进制的字面量,但所有数学运算返回的都是十进制结果。
 61                     */
 62                     var iNum = 070;  //070 等于十进制的 56
 63 
 64                     var iNum = 0x1f;  //0x1f 等于十进制的 31
 65                     var iNum = 0xAB;  //0xAB 等于十进制的 171
 66                     console.log(typeof(iNum))//number
 67                //c、浮点数
 68                     /*
 69                         要定义浮点值,必须包括小数点和小数点后的一位数字(例如,用 1.0 而不是 1)。
 70                         这被看作浮点数字面量。
 71                         对于浮点字面量的有趣之处在于,用它进行计算前,真正存储的是字符串。
 72                     */
 73                     var fNum = 5.0;
 74                     console.log(typeof(fNum))//number
 75                //d、科学计数法
 76                     /*
 77                         对于非常大或非常小的数,可以用科学计数法表示浮点数,可以把一个数表示为数字(包括十进制数字)加 e(或 E),后面加乘以 10 的倍数。
 78 
 79                         提示:也可用 64 位 IEEE 754 形式存储浮点值,这意味着十进制值最多可以有 17 个十进制位。
 80                         17 位之后的值将被裁去,从而造成一些小的数学误差。
 81                     */
 82                     var fNum = 5.618e7//该符号表示的是数 56180000。把科学计数法转化成计算式就可以得到该值:5.618 x 107。
 83                //e、特殊的 Number 值
 84                     /*
 85                         几个特殊值也被定义为 Number 类型。
 86                         前两个是 Number.MAX_VALUE 和 Number.MIN_VALUE,它们定义了 Number 值集合的外边界。
 87                         所有 ECMAScript 数都必须在这两个值之间。
 88                         不过计算生成的数值结果可以不落在这两个值之间。
 89 
 90                         当计算生成的数大于 Number.MAX_VALUE 时,它将被赋予值 Number.POSITIVE_INFINITY,意味着不再有数字值。
 91                         同样,生成的数值小于 Number.MIN_VALUE 的计算也会被赋予值 Number.NEGATIVE_INFINITY,也意味着不再有数字值。
 92                         如果计算返回的是无穷大值,那么生成的结果不能再用于其他计算。
 93 
 94                         事实上,有专门的值表示无穷大,(如你猜到的)即 Infinity。
 95                         Number.POSITIVE_INFINITY 的值为 Infinity。
 96                         Number.NEGATIVE_INFINITY 的值为 -Infinity。
 97 
 98                         由于无穷大数可以是正数也可以是负数,所以可用一个方法判断一个数是否是有穷的(而不是单独测试每个无穷数)。
 99                         可以对任何数调用 isFinite() 方法,以确保该数不是无穷大。
100 
101 
102                         最后一个特殊值是 NaN,表示非数(Not a Number)。
103                         NaN 是个奇怪的特殊值。
104                         一般说来,这种情况发生在类型(String、Boolean 等)转换失败时。
105                         例如,要把单词 blue 转换成数值就会失败,因为没有与之等价的数值。
106                         与无穷大一样,NaN 也不能用于算术计算。
107                         NaN 的另一个奇特之处在于,它与自身不相等
108                     */
109                     var iResult = iNum * 2;
110                     if (isFinite(iResult)) {
111                         console.log("finite");
112                     }
113                     else {
114                         console.log("infinite");
115                     }
116             //1.3 布尔(Boolean)
117                     /*
118                         Boolean 类型是 ECMAScript 中最常用的类型之一。它有两个值 true 和 false (即两个 Boolean 字面量)。
119                         即使 false 不等于 0,0 也可以在必要时被转换成 false,这样在 Boolean 语句中使用两者都是安全的。
120                     */
121                     var bFound = true;
122                     var bLost = false;
123             //1.4 对空(Null)
124                     /*
125                         Null是只有一个值的类型,它只有一个专用值 null,即它的字面量。
126                         值 undefined 实际上也是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。
127                     */
128                     console.log(null == undefined);  //输出 "true"
129             //1.5 未定义(Undefined)
130                     /*
131                         Undefined 类型只有一个值,即 undefined。
132                         当声明的变量未初始化时,该变量的默认值是 undefined。
133                         当函数无明确返回值时,返回的也是值 "undefined"。
134                     */
135                     var oTemp;
136                     console.log(oTemp == undefined);//输出 "true"
137                     console.log(typeof oTemp); //输出 "undefined"
138                     /*提示:值 undefined 并不同于未定义的值。但是,typeof 运算符并不真正区分这两种值。*/
139                         /*前面的代码对两个变量输出的都是 "undefined",即使只有变量 oTemp2 从未被声明过。
140                         如果对 oTemp2 使用除 typeof 之外的其他运算符的话,会引起错误,因为其他运算符只能用于已声明的变量上。*/
141                     var oTemp;
142                     console.log(typeof oTemp);  //输出 "undefined"
143                     console.log(typeof oTemp2);  //输出 "undefined"
144 
145                     function testFunc() {}
146                     console.log(testFunc() == undefined);  //输出 "true"
147             //1.6 Symbol (Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。)
148                 /*
149                     ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。
150                     Symbol 的值是唯一的,所以不会出现相同值得常量,区别于const,字符串不能保证常量是独特的。
151                 */
152                 let sy = Symbol("KK");
153                 let sy1 = Symbol("KK");
154                 console.log(sy)//输出 Symbol(KK)
155                 console.log(sy1)//输出 Symbol(KK)
156                 console.log(sy==sy1)//输出 false
157         //2.引用数据类型:
158         /*
159         引用数据类型相比于基本数据类型:
160                     引用数据类型需要通过关键词new生成
161                     引用数据类型的值是可变的,基本数据类型是不可变的
162                     引用数据类型变量赋值传递的是内存地址
163                     引用数据类型比较是对内存地址的比较,基本数据类型的比较是对值得比较
164         */
165             //2.1 对象(Object)
166                 /*
167                     Object 对象自身用处不大,不过在了解其他类之前,还是应该了解它。
168                     因为 ECMAScript 中的 Object 对象与 Java 中的 java.lang.Object 相似,
169                     ECMAScript 中的所有对象都由这个对象继承而来,
170                     Object 对象中的所有属性和方法都会出现在其他对象中,
171                     所以理解了 Object 对象,就可以更好地理解其他对象。
172                 */
173                 var obj = new Object();//创建一个对象
174                 o.name = 'obj';//为对象添加name属性并赋值‘obj’
175 
176                 /*
177                 ***Object 对象的方法***
178                     hasOwnProperty(property)
179                     判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty("name"))
180 
181                     IsPrototypeOf(object)
182                     判断该对象是否为另一个对象的原型。
183 
184                     PropertyIsEnumerable
185                     判断给定的属性是否可以用 for...in 语句进行枚举。
186 
187                     ToString()
188                     返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
189 
190                     ValueOf()
191                     返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。
192 
193                     注释:上面列出的每种属性和方法都会被其他对象覆盖。
194                 */
195             //2.2 数组(Array)
196                 /*
197                     
198                 */
199             //2.3 函数(Function)
200                 /*
201                     
202                 */
203             // 2.4 日期(Date)
204                 /*
205                     
206                 */
207             //2.5 基本数据类型包装类型(Number、String......)
208                 /*
209                     
210                 */
211     </script>
212 </body>
213 </html>

 

posted @ 2021-08-26 17:12  飞渝  阅读(60)  评论(0)    收藏  举报