当前位置: 首页 > news >正文

第二章数据和判定

一:javascript中基本数据类型

在javascript中用来保存数据的基本类型有以下三种

 1.字符串:一连串的字符,如 "sm"

 2.数字:一个数,包括浮点数

 3.布尔值:包含一个真值或假值

有时它们也被称作是基本数据类型,因为它们只保存单个值。还有两个不同的基本数据类型。它们不保存信息,用来对特定的情况给出我们警告。1.空值(null):表示没有数据。

2.未定义(undefined):表示没有定义也没有赋值。当你使用变量的时候,这种类型非常重要。

一.1:不同数据类型的转换

说明:prompt()函数是javascirpt的一个函数,它用来让用户输入一个值然后把它返回到代码中,可用一个变量接受也可不用。。

 大多数时候,JavaScript解释器能够识别出我们想使用的数据类型。举个例子,在下面的嗲吗中,解释器明白数字1和2是数字类型,并会对他们做相应处理。

<html>
 <body>
      <script type="text/javascript">
       var myCalc=1+2;
       document.write("The calculated number is "+myCalc);
       </script>
     </body>    
</html>

结果显示为:The calculated number is 3

可是如果重写代码,使用prompt()函数允许用户输入自己的数字,我们会得到一个完全不同的结果

<html>
 <body>
      <script type="text/javascript">
       var userEnteredNumber=prompt("Please enter a number","");
       var myCalc=1+userEnteredNumber;
       var myResponse="The number you entered +1="+myCalc;
       document.write(myResponse);
          </script>
     </body>    
</html>

如果在提示框中输入2,结果是:The number you entered +1=12

原因:JavaScript解释器不是把这两个数加在一起,而是把它们进行连接操作。这是因为prompt()函数实际上把用户输入的值返回为字符串数据类型,尽管这个字符串中包含数字字符。连接运算发生在这一行:var myCalc=1+userEnteredNumber;

从效果上看,如同我们写成了:var myCalc=1+"2";

可是如果用减法运算符:var myCalc=1-userEnteredNumber;结果会是正确的。

因为减法运算符不适用于字符串数据,所以javaScript能计算出把该数据当做数字来对待时的正确的结果。这个同样适用于*和/运算符。typeof()运算符返回传递给它的参数的数据类型,因此我们可以使用它来看JavaScript解释器正在处理哪种数据类型:

var userEnteredNumber=prompt("Please enter a number","");
document.write(typeof(userEnteredNumber))
;


这段代码会把字符串写到页面。要确保解释器正杂使用我们想要的数字数据类型,方法就是显示第声明这个数据就是一个数。有三个函数可以用来实现这一目的。
1.Number():设法把括号里的变量值转换成一个数。会拒绝任何包含非数字字符的字符串,例如Number(123.2abc)输出的结果会是NaN.
2.ParseFloat():设法把括号里的值转换成一个浮点数。它从左到右地逐个字符地解析字符串,直到遇到一个字符不能用在数字里。然后它会在那个点停止并把
这个字符串转换成数字。如果第一个字符就不能在数字里使用,返回的结果是NaN(它代表非数字,Not a Number)
3.ParseInt():把括号里的值转换成一个整数,它不用四舍五入,而是把小数部分直接去掉。任何传递到这个函数中的非数字
参数都会被丢掉。如果第一个字符不是+,-或一个阿拉伯数字,则返回的结果是NaN

所以刚刚遇到的那个问题可以用Number()来解决。var userEnteredNumber=Number(prompt("Please enter a number",""));

二:javascript中复合数据类型

  复合数据类型有两种:对象和数组。

  对象:包含任一个对象(包括浏览器提供的对象)的一个引用

  数组:包含一个或多个其他的数据类型。

1.对象

先看下对象数据类型,JavaScript提供了三个对象:String,Date和Math

 这三个对象做着三种不同的事情。

Sting对象:存储一个字符串,并提供处理字符串需要的属性和方法

Date对象:存储一个日期,并提供处理它的方法

Math对象:不存储数据,但提供操纵数学上数据的属性和方法

一:String对象

1.隐式创建String对象

<html>
 <body>
      <script type="text/javascript">
       var myStringInit="abc";
       document.write(typeof(myStringInit));
       document.write("<br>");
       document.write(myStringInit.length);
       document.write("<br>");
       document.write(typeof(myStringInit));
      </script>
     </body>    
</html>

输出的结果为

string

3

string

javaScript会把这个字符串从基本类型简单地转换成一个临时的String对象,对它使用方法,然后在吧数据类型转换成字符串,所以两次输出的数据类型都是string

2.显式创建String对象

 

<html>
 <body>
      <script type="text/javascript">
       var myStringInit=new String("abc");
       document.write(typeof(myStringInit));
       document.write("<br>");
       document.write(myStringInit.length);
       document.write("<br>");
       document.write(typeof(myStringInit));
      </script>
     </body>    
</html>

 

这个输出的结果将是

object

3

object

一.1 使用String对象的方法

介绍indexOf()和SubString()方法

<html>
 <body>
      <script type="text/javascript">
       var myStringInit="my name is wj,helo";
       var firstNameIndex=myStringInit.indexOf("w");
       var firstName=myStringInit.substring(firstNameIndex);
       document.write(firstName);
      </script>
     </body>    
</html>

这段代码将输出从w开始的后面所有字符,wj,helo

二.Date对象

 

<html>
 <body>
      <script type="text/javascript">
        var originalDate=prompt("Enter a date(Day,Name of the Month,Year)","31 Dec 2003");
        var originalDate=new Date(originalDate);
        var addDays=Number(prompt("Enter number of days to be added","1"));
        originalDate.setDate(originalDate.getDate()+addDays);
     document.write(originalDate.toString());
      </script>
     </body>    
</html>

 

注意prompt()函数的用法。此代码的运行结果是输入提示时的31 Dec 2003,另有1作为需要增加的天数,那么得到的结果将会是 Thu Jan 01 2004 00:00:00 GMT+0800 (中国标准时间)

三.Math对象

Math对象提供了许多与数学相关的功能,例如获得一个数的平方或者产生一个随机数。Math对象和Date与String对象有两点不同:

1. 不能显示地创建一个Math对象,直接使用它就可以了。

2.Math对象不存储数据,和String与Date对象不同。

介绍下舍入数字和产生一个随机数的方法

1)舍入数字

  round():当小数是0.5或者大于0.5的时候向上入一位。

  ceil():始终向上舍入,即23.75和23.25都将变成24

  floor():始终向下舍入,即23.25和23.75都将变成23

<html>
 <body>
      <script type="text/javascript">
        var numberToRound=prompt("please enter a number","")
        document.write("round()="+Math.round(numberToRound));
        document.write("<br>");
        document.write("floor()="+Math.floor(numberToRound));
        document.write("<br>");
        document.write("ceil()="+Math.ceil(numberToRound));
      </script>
     </body>    
</html>

输入23.75后输出结果为:

round()=24       floor()=23     ceil()=24

2)生成一个随机数

 用math对象的random()方法,生成一个大于等于0但小于1的随机小数。通常为了利用它,你需要乘以某个数,然后再使用其中的一个舍入方法。Math.random()

2.数组

 javaScript允许我们使用一个数组来存储和访问相关的数据。一个数组有点像一行单元格,每个单元格包含一个独立的数据项。一个数组可以存储JavaScript支持的任何数据类型。举例来说,可以使用一个数组来处理用户从中选择的项目列表,或者一组图像坐标,或者一组图片的引用。

 Array对象,类似String和Date对象,需要使用new关键字和构造函数来创建。可以在创建一个Array对象时初始化它:var preInitArray=new Array("first item","second item","third item");或者设置它来保存一定数目的数据项:

 var preDeterminedSizeArray=new Array(3);

或者创建一个空数组:var anArray=new Array();

可以通过为这些元素赋值来为数组添加新的数据项:anArray[0]="anItem"  anArray[1]="anotherItem"

数组对象的方法和属性

1)截取数组的一段

 slice()方法对于一个Array对象就如同subString()方法对于一个String对象。只要简单地告诉这个方法你想要截取哪些元素。 slice()方法有两个参数:片段中第一个元素的索引,它包含在这个片段中;最后一个元素的索引,片段中不会包含它。

2)连接两个数组

 Array对象的concat()方法运行连接数组。可以使用这个方法把两个或多个数组连接到一起,每个新数组在前面数组结束的地方开始。

 

<html>
 <body>
      <script type="text/javascript">
       var arrayOne=new Array("one","two","three","four","five");
       var arrayTwo=new Array("ABC","DEF","GHI");
       var arrayThree=new Array("John","Paul","George","Ringo");
       var joinedArray=arrayOne.concat(arrayTwo,arrayThree);
       document.write("joinedArray has"+joinedArray.length+"elements<br>");
       document.write(joinedArray[0]+"<br>");
       document.write(joinedArray[11]+"<br>");
      </script>
     </body>    
</html>

 

结果连接后的数组的长度是12个数据项,输出是第一个元素one,和最后一个元素Ringo

 

3)数组和字符串之间的相互转换

 数组转换为字符串示例

 

<html>
 <body>
      <script type="text/javascript">
       var arrayThree=new Array("John","Paul","George","Ringo");
       var lineUp=arrayThree.join(',');
       alert(lineUp);
      </script>
     </body>    
</html>

 

 字符串转换为数组示例

<html>
 <body>
      <script type="text/javascript">
       var lineUp="John,Paul,George,Ringo";
       var members=lineUp.split(',');
       alert(members[0]);  
      </script>
     </body>    
</html>

结果可想而知。。。

4)数组排序

<html>
 <body>
      <script type="text/javascript">
       var lineUp=new Array("John","Paul","George","Ringo");
       var sortedArray= lineUp.sort();
       document.write(sortedArray[0]+"<br>");
       document.write(sortedArray[1]+"<br>");
       document.write(sortedArray[2]+"<br>");
       document.write(sortedArray[3]+"<br>");
      </script>
     </body>    
</html>

这个排序的结果将按照严格的数学顺序----ASCII码中的字符编号进行的, 结果显示为:

 

排好序后还可以使用reverse()方法来把字母表中的最后的字母作为第一个元素来显示。

在JavaScript中进行判定

<html>
 <body>
      <script type="text/javascript">
       var string1=new String("Apple");
       var string2=new String("Apple");
       document.write(string1==string2);
      </script>
     </body>    
</html>

这个结果返回的是false,即使两个字符串对象持有相同的字母,他们也不是同一个对象。所以返回的是false

如果你确实需要比较两个对象持有相同的字符串,可以使用valueOf()方法来对数据值进行比较:

<html>
 <body>
      <script type="text/javascript">
       var string1=new String("Apple");
       var string2=new String("Apple");
       document.write(string1.valueOf()==string2.valueOf());
      </script>
     </body>    
</html>

这样返回的结果将是true。

后面的神马条件语句,switch语句,循环语句应该是熟悉不过的了,所以。。。。over这一章。。。

小结:

 学到了JavaScript如何处理数据,并明白了许多数据类型:字符串,数字,布尔值以及对象和数组,还有一些特殊的类型,NaN,null和Undefined.

 学会数据类型的转换,字符串到数组,数组到字符串。

 接触javaScript内置对象:String,Date和Math对象。这些对象提供了许多有用的功能如操纵字符串,日期和数字。 还说明了Array对象,它允许多个数据项存储在单个变量中。

 最后的判定,很熟悉的知识,每种编程语言都会用到的逻辑控制等等。。。。

 

转载于:https://www.cnblogs.com/wj204/p/3402204.html

相关文章:

  • Android中ViewGroup等容器控件的使用
  • 软考--数据通信与网络基础
  • shell--字符串比较,整数比较,文件比较
  • SQL查询有关 sql_variant 值的基本数据类型和其他信息
  • struts2常量的配置
  • HTML5判断设备在线离线及监听网络状态变化例子
  • ntc:iBatis的demo
  • Linux RAID简介
  • 正确理解SOA、SaaS和云计算的关系
  • linux查看各项参数
  • 关于关于--关于网络,关于还是关于
  • 【Demo 0002】Android 提醒框
  • 数据相似性检测算法
  • vc的UI编程PngTextButton控件的适用情况
  • Android中在屏幕上涂鸦的例子
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【React系列】如何构建React应用程序
  • Debian下无root权限使用Python访问Oracle
  • JS专题之继承
  • Solarized Scheme
  • Twitter赢在开放,三年创造奇迹
  • Vim Clutch | 面向脚踏板编程……
  • webpack4 一点通
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 记一次和乔布斯合作最难忘的经历
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 深度解析利用ES6进行Promise封装总结
  • Nginx实现动静分离
  • 湖北分布式智能数据采集方法有哪些?
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #微信小程序:微信小程序常见的配置传旨
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (06)金属布线——为半导体注入生命的连接
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (转)详解PHP处理密码的几种方式
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .NET 8.0 中有哪些新的变化?
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .Net环境下的缓存技术介绍
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @AliasFor注解
  • @Service注解让spring找到你的Service bean
  • @软考考生,这份软考高分攻略你须知道
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]
  • [Angular 基础] - 自定义指令,深入学习 directive
  • [c++] 单例模式 + cyberrt TimingWheel 单例分析
  • [C++]指针与结构体
  • [Codeforces] number theory (R1600) Part.11