JS数据类型

Posted python-data-machine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS数据类型相关的知识,希望对你有一定的参考价值。

1.JS总体上分为:原始值和引用值

  原始值分为:Number、Boolean、String、undefined、null;原始值不可改变的值,存储在栈【stack】的,先进后出!

        引用值:array、Object、function、date、RegExp;原始值是可改变的,引用值大体是存储在堆【heap】中;

说明:一个变量经过声明,但是没有赋值,默认情况下就是undefined!例如:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var b;
4         document.write(b);
5     </script>
6 </body>
View Code

2.JS错误分为:低级错误【语法解析错误】和逻辑错误【标准错误,情有可原】,每个js语句后面都要以;【分号】结尾,但是函数、for循环、if语句后面不需要加分号;

  ①. 低级错误:

技术分享图片
1         <script type="text/javascript">
2         var a=1;
3         var b=2:
4         var c=3;
5         document.write(b);
6     </script>
View Code

像上面这种,本来b后面是需要加分号的,结果却是加上了冒号,所以这叫语法解析错误!

  ②.逻辑错误:

技术分享图片
1 <script type="text/javascript">
2     var a=1;
3     var c=3;
4     document.write(b);
5 </script>
View Code

上面这段代码明明没有变量b,但是我们这里愣是使用了document.write(b)将变量b的值输出了,这是逻辑错误!

 

3.一个html页面中可以使用多个js代码块,如下所示:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a=1;
4     </script>
5     <script type="text/javascript">
6         document.write(a);
7     </script>
8 </body>
View Code

我们从上面的js代码块中声明了变量a,但是是从下面的js代码块中输出了变量a,这和从一个代码块中声明a和输出a没有区别!要真说有没有区别呢?实际上也是有点的,如下所示:

技术分享图片
 1 <body>
 2     <script type="text/javascript">
 3         var a=1;
 4         document.write(c);
 5     </script>
 6     <script type="text/javascript">
 7         var b=2;
 8         document.write(b);
 9     </script>
10 </body>
View Code

这样有多个代码块的时候,当一个代码块中【上边的代码块】出了错误并不会影响下面代码块!

 

4.运算操作符:

  + 号,作用:

            ①.数学运算

            ②.任意数据类型和字符串相加都是字符串

5.凡是该返回一个数字的,但是又不知道这个数字是几的时候就会返回一个NaN【Not a Number】

   eg:   

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a = 0/0;
4         document.write(a);
5     </script>
6 </body>
View Code

如果是1/0,则返回值就是无限的Infinity,如下所示:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a = 1/0;
4         document.write(a);
5     </script>
6 </body>
View Code

如果是-1/0则结果就是负无穷【-Infinity】,如下所示:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a = -1/0;
4         document.write(a);
5     </script>
6 </body>
View Code

 

6.==是比较运算符,返回值为Boolean类型;如1==1,返回true;再例如:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         a = Infinity == Infinity;
4         document.write(a);
5     </script>
6 </body>
View Code

返回值也是true;但是有一个特例:NaN,这家伙一急眼连自己都不认识,如下:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         a = NaN == NaN;
4         document.write(a);
5     </script>
6 </body>
View Code

返回值为false;

 

7.&&【与】、||【或】、!【非】

   &&:与运算符,当&&连接两个表达式或者数值的时候,先看&&号前面的数值,如果该值转换成布尔值为false,则直接返回该值,

         如果该值转换为布尔值为true,则直接返回&&后面的值。eg:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         a = 0 && 2;
4         document.write(a);
5     </script>
6 </body>
View Code

返回值就为0,如果是下面的这个例子:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         a = 1 && 2+2;
4         document.write(a);
5     </script>
6 </body>
View Code

则返回值就为4;

所以:&&运算符连接两个表达式或者变量的时候,全真才是真,有一个为假,就返回假!

当&&连接多个表达式或者变量的时候,只要是&&前面的为真,那么它就往后走,直到遇到转换成布尔值为false的值的时候就直接返回该值【不用管真或者假】,如果直到最后都是真,那么返回最后一个值!如下:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         a = 1+2 && 2+2 && 3-3 && 1+3;
4         document.write(a);
5     </script>
6 </body>
View Code

返回值就是0,而如下代码:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         a = 1+2 && 2+2 && 3-2 && 1+3;
4         document.write(a);
5     </script>
6 </body>
View Code

返回值就是4;

注意:undifined、null、NaN、""【空串】、0、false  这六个值转换成Boolean值之后都是false!

 

||:或操作运算符,它和&&运算符的区别是:&&运算符遇到false的时候停止,而||或运算符是遇到true的时候返回,如果到最后没遇到为true的,那么就把最后一个返回!例如:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a= 4 || 3; 
4         document.write(a);
5     </script>
6 </body>
View Code

返回的是4,而如果是:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a= 0 || 3; 
4         document.write(a);
5     </script>
6 </body>
View Code

返回的就是3,如果是:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a= 0 || false || null; 
4         document.write(a);
5     </script>
6 </body>
View Code

返回的就是null;

 

!是取反的意思,这个非运算符会首先将运算符后面的表达式或者数字给转换成布尔值,然后取反操作,例如:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a = 4;
4         document.write(!a);
5     </script>
6 </body>
View Code

返回值为false;

如果是:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var a = undefined;
4         document.write(!a);
5     </script>
6 </body>
View Code

则返回值为true;

当然javaScript中还有&、|,这个&、|是二进制的与、或【也就是会先把两边的数值转换成二进制,然后进行相与的操作或者或的操作,实际开发中几乎不用】!

 

在浏览器接收用户输入的数据,案例如下:

技术分享图片
1 <body>
2     <script type="text/javascript">
3         var score =parseInt(window.prompt("input"));
4         if(score == 100){
5             alert("满分");
6         }
7     </script>
8 </body>
View Code

 

以上是关于JS数据类型的主要内容,如果未能解决你的问题,请参考以下文章

Relay.js 没有正确解析组合片段

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

js代码片段: utils/lcoalStorage/cookie

JS代码片段:一个日期离现在多久了