写在前面

国庆整理资料时,发现刚开始入门前端时学习JS 的资料,打算以一个基础入门博客记录下来,有不写不对的多多指教;

先推荐些书籍给需要的童鞋

《JavaScript 高级程序设计.pdf》第三版

《JavaScript权威指南(第六版).pdf》

《高性能javascript.pdf》

《JavaScript语言精粹---高清版.pdf》

《你不知道的JavaScript(上卷).pdf》

《你不知道的JavaScript(中卷).pdf》

数据类型

ECMAScript 中数据类型分为基本数据类型,复杂数据类型也称为引用数据类型,即常说的对象;

基本数据类型是简单的数据段,包括 String、Number、Boolean、Null、Undefined。

引用数据类型是由一组无序的名值对组成 如 Object;

基本数据类型

1、Undefined 类型

Undefined 类型只有一个值,即 undefined。以下情况的值会是 undefined
(1)变量被声明了,但没有赋值,默认值为undefined。
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
(5)未定义的变量使用typeof 返回undefined(严格模式下报错)。

<script>var a;console.log(a);//undefinedfunction f(a, b, c) {console.log(c)//undefined}f(1, 2); //未传递的实参function fo(){}console.log(fo());//没有明确返回值,默认返回undefined
</script>

2、Null 类型

Null 只有一个值 null,null是javascript语言的关键字,它表示一个特殊值,常用来描述"空值",从逻辑角度来看,null 是一个空对象指针;通常要把一个变量来保存对象,那么最好将变量初始化为null;

[注意]null是空对象指针,而[]是空数组,{}是空对象,三者不相同;

null与undefined 都是表示无、不存在,那么为什么会同时存在呢?

1、一开始null像在Java、.net里一样,被当成一个对象。但是javascript的值分成原始类型和对象类型两大类,作者认为基本类型表示”无”的值最好不是对象。
2、javascript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。作者认为如果null自动转为0,很不容易发现错误;

null 与undefined 区别又是什么呢?

目前来说,null和undefined基本是同义的,都是表示无,只是应用场景不太一样 如:

null表示"没有对象",即该处不应该有值。典型用法是:

  • 作为函数的参数,表示该函数的参数不是对象。
  • 作为对象原型链的终点。

undefined表示"缺少值",就是此处应该有一个值,但是还没有定义/初始化。典型用法是:

  • 变量被声明了,但没有赋值,默认值为undefined。
  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
  • 对象没有赋值的属性,该属性的值为undefined。
  • 函数没有返回值时,默认返回undefined。
  • 未定义的变量使用typeof 返回undefined(严格模式下报错)。

(typeof null) //返回object 误区

在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是0。由于 null 被设计成空指针(大多数平台下值为0x00),因此,null的类型标签也成为了0,typeof null就错误的返回了"object".(referenc) 但是如果修复了 会造成大量旧的js不兼容;

该现象有待于在ECMAScript 6中被修复 (该提议已被否决). 正确的返回值将成为 typeof null === 'null'.

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof

3、Boolean 类型

Boolean 布尔类型有 true、false。在js中是区分大小写的,即 True、False 并不是Boolean的值,虽然Boolean 只有这两个值,但是在js中任何数据类型的值调用Boolean()函数,都能返回一个Boolean值;只要记住如下规则即可:(0,-0,NaN,'',null,undefined)这六个永远为false,其它都为true

<script>var message = 'ds';if (message) {console.log('成功'+message)// 成功ds}var obj={};if(obj){console.log('成功'+obj)// 成功[object Object]}var a=0;if(a){console.log('成功'+a);}else{console.log('失败'+a)// 失败0}</script>

4、Number 类型

在js中使用Number 类型来表示整数与浮点数(数值必须包含一个小数点);

var intNum=66; //整数
var floatNum=1.1 //浮点数

如果某次计算的结果超出了Javascript 数值范围(Number.MAX_VALUE 最大值 Number.MIX_VALUE)那么这个结果就会自动转为Infinity,如果这个数值是负数会转为-Infinity(负无穷),如果是正数会转为Infinity(正无穷)

NaN:非数值(Not a Number)是一个特殊的值,表示这里本应该是一个数值,但是并不是数值; 如

 var a=10,b='str';console.log(a*b);//NaN

NaN 具有如下特点:
1、任何与NaN的操作都是返回NaN;
2、NaN与任何值都不相等;  

<script>var a = 10, b = 'str';console.log(a * b);//NaNconsole.log(NaN == NaN)//falseconsole.log(NaN === NaN)//falseconsole.log(NaN == 'str')//false
</script>

针对NaN的两个特点,ECMAScript定义了 isNaN()函数来确定某个变量/表达式结果是不是NaN,这个函数会尝试把变量转换为数值,如果不能转换则返回true,反正返回false;  

<script>console.log(isNaN('red'));//true 不能转换numberconsole.log(isNaN('10'));//false 能转换numberconsole.log(isNaN(10));//false 能转换numberconsole.log(isNaN(false));//false 能转换numberconsole.log(isNaN(true));//false 能转换numberconsole.log(isNaN(''));//false 能转换number  0console.log(isNaN(undefined));//true 不能转换numberconsole.log(isNaN('undefined'));//true 不能转换numberconsole.log(isNaN(null));//false 能转换number 0console.log(isNaN('null'));//true 不能转换number</script>

typeof 基本数据类型检查

<script>var s = 'name';console.log(typeof s)//string
</script>

typeof                            返回以下字符串

undefined                      这个变量未定义、未初始化
object                            这个变量是对象或者是null
boolean                         这个变量是布尔值
number                          这个变量是数值
string                             这个变量是字符串
function                         这个变量是函数

引用数据类型

引用类型是一种用于将数据和功能组织在一起的数据结构(也常被成为类),引用类型的值(对象)是引用类型的一个实例。但是js中没有类的概念,因此引用类型也可以被称为对象,因为他们描述的是属性和方法的集合;
ECMAScript提供了很多原生引用类型(如:Object)

Object类型

我们看到的大部分引用类型都是Object类型的实例,Object的实例本身不具备很多功能,但对于在应用程序中存储和传输数据而言,是非常理想的选择。

Array类型

除了Object之外,Array算是js最常用最常用的类型。js中的数组与其他语言的数组都是数据的有序列表,因为js是弱类型,所以js中数组的每一项可以保存任何类型的数据;

Date类型

js中用于构建日期对象的引用类型

RegExp类型

js通过RegExp类型来支持正则表达式

Function类型

js中的function实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针;

引用类型提供的属性以及方法这里不在叙述,不知道的可以参考如下连接

http://www.w3school.com.cn/jsref/jsref_obj_array.asp

instanceof  检测某个实例的具体类型 

语法:

object instanceof constructor

描述:
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
可以理解为 instanceof 用于判断某个实例(对象)是否是某个类型的实例;  

var a=new Array();
alert(a instanceof Array);//true,
alert(a instanceof Object)也会返回true;这是因为Array是object的子类。再如:
function test(){};
var a=new test();
alert(a instanceof test)会返回true。

转载于:https://www.cnblogs.com/CandyManPing/p/7720278.html

javascript 之数据类型--01相关推荐

  1. JavaScript基础第01天—编程语言—计算机基础—初始JavaScript—JavaScript注释—JavaScript输入输出语句—变量的使用—数据类型—关键字和保留字

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  2. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  3. JavaScript基础第01天笔记

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  4. JavaScript学习记录01快速入门、基本语法、严格检查模式

    文章目录 JavaScript学习记录01快速入门.基本语法.严格检查模式 1.1什么是JavaScript 1.2认识JavaScript框架 1.3快速入门 1.4基本语法入门 1.5数据类型简介 ...

  5. JavaScript的数据类型有哪些?

    JavaScript的数据类型有哪些? 基本数据类型:字符串 String.数字 Number.布尔Boolean 复合数据类型:数组 Array.对象 Object 特殊数据类型:Null 空对象. ...

  6. javascript 六种数据类型

    javascript 六种数据类型 js的数据类型和常见隐式转化逻辑. 一.六种数据类型 原始类型(基本类型):按值访问,可以操作保存在变量中实际的值.原始类型汇总中null和undefined比较特 ...

  7. JavaScript进阶系列01,函数的声明,函数参数,函数闭包

    本篇主要体验JavaScript函数的声明.函数参数以及函数闭包. □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调 ...

  8. JavaScript 所有数据类型

    JavaScript 所有数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object ...

  9. 前端之 JavaScript 常用数据类型和操作

    JavaScript 常用数据类型有:数字.字符串.布尔.Null.Undefined.对象 JavaScript 拥有动态类型 JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型 ...

最新文章

  1. Cocos2d-xna : 横版战略游戏开发实验5 TiledMap实现关卡地图
  2. 醉话没有测试(QA)的测试
  3. 直流电源端口雷击或瞬态浪涌防护设计方案图详解
  4. 牛客网 【每日一题】5月11日题目精讲 Moovie Mooving
  5. 基于matlab 的燃油喷雾图像处理方法,基于MATLAB的燃油喷雾图像处理方法.doc
  6. C++类与对象(05)
  7. GCD之线程挂起与恢复
  8. 两端“弱智”的HTML代码
  9. visio2016交叉线(跨线)去掉交叉点弯曲的办法
  10. 以CIM平台推动数字孪生落地 以数字孪生助力智慧城市建设
  11. java 舆情分析_基于jsp的舆情监测系统-JavaEE实现舆情监测系统 - java项目源码
  12. POI实现合并单元格
  13. Java设置excel单元格锁定状态
  14. 带你走进springboot
  15. php 云片网对接,如何实现php调用云片网接口发送短信
  16. 算法注册机编写扫盲之续篇---第二课
  17. 什么叫做私有网络VPC?
  18. JavaScript 发明者布兰登·艾克成为 Mozilla CEO
  19. resNet论文学习心得
  20. QT 开发板无法显示GIF图片,windows能正常显示问题

热门文章

  1. 【Linux】一步一步学Linux——nm命令(250)
  2. tomcat跳转报错_微信小程序开发:使用reLaunch跳转时报错的解决步骤
  3. MySQL的查询缓存
  4. m5310模组数据上传至onenet_5G通信模组799元限量发售,中国移动意欲何为?
  5. 学习笔记-----关于VS中使用模板类出现无法解析的外部符号问题
  6. 正则表达式加golang爬虫爬取经典案例豆瓣top250
  7. 16位汇编 call调用函数 通过栈来传递参数
  8. 瀑布式开发、迭代式开发、螺旋开发、敏捷开发四种开发模式的区别
  9. HDU 2570 迷瘴
  10. C++ std::condition_variable wait() wait_for() 区别