数据类型回顾——NaN和isNaN—JS学习笔记2015-6-3(第47天)

1、什么是NaN?

not a number  不是数字,但是使用typeof检测可以看出它是数字类型;

也就是说它在JS中的数据类型当中,归属于number类型;

JS中的数据类型:number(NaN)、string、boolean、function、undefined、object(obj、[]、{}、null)

2、出现NaN时候说明什么呢?

说明进行了非法的运算操作

本身的特性  NaN的布尔值类型是false;

NaN和它本身都不相等;

3、什么是isNaN?

(不是个数字)

isNaN(); // 可以判断某些值是不是数字类型;

非常讨厌数字,遇到数字后会返回false

其他都返回true;

isNaN(),它的内部调用的是Number()方法

比如:alert(isNaN(2));  // 返回false;

     alert(isNaN(‘Here I am‘)) // 返回 true;  因为这里Number()来转换,转换后不是数字

alert(isNaN(‘250‘)) //   返回false ,这里Number()转换后是数字250,所以返回false;

alert(isNaN(true)) // false

所以当Number()转不了的时候,返回NaN,就返回true

实例:(利用isNaN 判断类型)

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 5 <title>无标题文档</title>
 6
 7 <script>
 8 window.onload = function(){
 9    var alnp = document.getElementsByTagName(‘input‘);
10    var str = ‘‘;
11
12    alnp[1].onclick = function(){
13        str = alnp[0].value;
14        // 属性操作我们发现,从HTML拿到内容,类型都是字符串;
15        // alert(typeof str); 这里判断出来都是字符串
16     if (isNaN(str)) {
17         alert(str + ‘不是数字‘);
18     }else{
19         alert(str + ‘是数字‘);
20     };
21
22
23    }
24
25 }
26
27 </script>
28
29 </head>
30
31 <body>
32 <input type="text">
33 <input type="button" value="判断是不是数字">
34
35 </body>
36 </html>

实例二:判断QQ号是否正确(还差一个前导0的判断)

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 5 <title>判断是否为合理的QQ号码</title>
 6
 7 <script>
 8 window.onload = function(){
 9    var alnp = document.getElementsByTagName(‘input‘);
10    var str = ‘‘;
11
12    alnp[1].onclick = function(){
13        str = alnp[0].value;
14        // 属性操作我们发现,从HTML拿到内容,类型都是字符串;
15        // alert(typeof str); 这里判断出来都是字符串
16     if (str === ‘‘) {
17
18         alert(‘您没有输入内容‘);
19
20     }else if(isNaN(str)){
21
22          alert(‘您输入的不是数字‘)
23
24     }else if(parseInt(str)!== parseFloat(str)){
25
26          alert(‘您不可以输入小数,这不合法‘);
27
28     }else if(str.length>=5 && str.length<10){
29
30       alert(‘恭喜你,您输入的是有效的QQ号码‘)
31
32     }else{
33
34       alert(‘您的输入的数字必须在5位以上、10位以内‘);
35
36     }
37
38    }
39
40 }
41
42 </script>
43
44 </head>
45
46 <body>
47 <input type="text">
48 <input type="button" value="判断是不是有效QQ号码">
49 <p>
50   1、有没有输入<br />
51   2、输入的是不是数字<br />
52   3、不能有0在前面<br />
53   4、不能是小数<br />
54   5、输入的数字必须在5位以上、10位以内
55 </p>
56
57 </body>
58 </html>

时间: 2024-10-07 13:45:50

数据类型回顾——NaN和isNaN—JS学习笔记2015-6-3(第47天)的相关文章

数据类型回顾之parseIng&amp;parseFloat——JS学习笔记2015-6-2(第46天)

成功在于坚持,送给自己这句话: 今天回顾的是parseInt和parseFloat这两种数据类型的数值转换方法: 相对于Number():方法而言,parse的两个方法是比较勤快的,从左到右一个个去解析,而Number是全面解析: 可以这么理解parseInt,他比较土豪,在转换数值的时候,自左向右,遇到非数字的时候就停止转换了,后面的数据通通抛掉: 不过parseInt还是比较聪明的,当数值前面有空格,一个或多个0的时候,还是会成功转换为整数值,var num1 = parseInt('000

js学习笔记知识点

AJAX用法安全限制JSONPCORS面向对象编程创建对象构造函数原型继承class继承 AJAX 用法 AJAX不是JavaScript的规范,它只是一个哥们"发明"的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求 在现代浏览器上写AJAX主要依靠XMLHttpRequest对象: 'use strict'; function success(text) { var textarea = document.getE

js学习笔记——数组方法

join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1#2#3"; 如果没有指定分隔符,则默认为逗号 var str2=arr.join(); //str2="1,2,3"; reverse() 在原数组上把元素的顺序颠倒过来,并返回该数组 var arr=[1,2,3]; arr.reverse(); //arr=[3,2,1];

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据

Node.js学习笔记(3) - 简单的curd

这个算是不算完结的完结吧,前段时间也是看了好久的Node相关的东西,总想着去整理一下,可是当时也没有时间: 现在看来在整理的话,就有些混乱,自己也懒了,就没在整理,只是简单的记录一下 一.demo的简单介绍 这次demo,只涉及到简单的curd操作,用到的数据库是mongo,所以要安装mongo数据库,数据库连接驱动是mongoose: 当然关于mongo的驱动有很多,比如mongous mongoskin等:(详见http://cnodejs.org/topic/4f4ca8e0940ce2e

JS学习笔记-OO疑问之封装

封装是面向对象的基础,今天所要学习的匿名函数与闭包就是为了实现JS的面向对象封装.封装实现.封装变量,提高数据.系统安全性,封装正是面向对象的基础. 匿名函数 即没有名字的函数,其创建方式为 function(){...} 单独存在的匿名函数,无法运行,可通过赋值给变量调用或通过表达式自我执行来实现运行. 1.赋值给变量为一般的函数使用方式 var run = function(){ return '方法运行中'; }; alert(run()); 2.通过表达式自我执行 (function(a