数据类型

布尔:true/fasle

console.log(typeof true);// "boolean"

Number : true -->1 false -->0

console.log(Number(true));
console.log(Number(false));

Boolean : 把其他数据类型转换布尔值;

console.log(Boolean(12));//true
console.log(Boolean(10));//true
console.log(Boolean(0));//false
console.log(Boolean("{}"));//true
console.log(Boolean("12px"));//true
console.log(Boolean([]));//true
console.log(Boolean({}));//true
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
console.log(Boolean(NaN));//false
console.log(Boolean(/\d/));//true

其他数据类型转布尔类型是false有且只有五个值: 0 "" NaN null undefined;

逻辑运算符: ||: 或 &&: 并且; !取反
1.放在if条件中;
|| : 只要其中有一个为true,整体结果是true;
&& : 只要有一个是false,整体结果是false;
if ("" || 0) {
console.log(100)
}
if (99 && 0) {
console.log(0);
}

2.赋值作用;

如果前面这个值转布尔是true,直接取前面这个值;如果转布尔是false,直接取后面的那个值;
var abc = "12px" || undefined;
console.log(abc);//12px

如果前面转布尔是true,直接取后面那个值;如果转布尔是false,直接前面的值;

var bcd = null && 17;
console.log(bcd);//null

数据类型之间的比较: true /false;

!:取反;首先会把后面的值转换成布尔值,然后在取反;
console.log(!1);//true
!!:直接把当前转换布尔值
console.log(!!”“);//false

null和undefined

null 和 undefined都代表没有;
typeof null –> “object”; 空对象指针;
区别: null 表示现在没有,但是以后可能会有;
undefined :现在没有,以后也不能有;
 
常见的null的情况
  1. 1.通过ID获取元素,如果ID名字不存在,那么返回null;
  2. 2.通过正则进行捕获时,如果没有捕获到内容,那么结果是null;
  3. 3.在清空对象,销毁堆内存时,给对象赋值时,赋值为null;
常见的undefined的情况
  1. 当获取对象属性名对应的属性值时如果属性名不存在,那么返回值是undefined;
  2. 函数的形参如果没有实参赋值,在函数中默认存储undefined
  3. 如果函数没有return,那么函数的返回值是undefined;
  4. 如果变量只声明,没有赋值,那么默认存储也是undefined;
var gg = document.getElementById("ab");
console.log(gg);//null
var obj = {a:1};
console.log(obj.b);//undefined
var c;
console.log(c);//undefined
var a;
console.log(a);//undefined

对象

1、引用数据类型,存储到堆内存中;
对象: 由键值对组成;键值对由属性值和属性名组成;键值对用逗号隔开
属性名和属性值用冒号隔开; 属性名是字符串类型,属性值是数据类型的一种;
var obj = {a:[]};
var o = {a:2}
 
没有length属性;没有索引;
console.log(obj[0]);
var a = 1;
对象的定义
1.首先会开辟一个新的空间地址;空间地址是16进制;0-9a-f;
2.把键值对存储到当前这个堆内存下;
3.把这个空间地址给了对象名;
// 对象名实际存储的是一个空间地址;
console.log(obj);
var a = {};
var b = {};
// 在JS中遇到{}、[] 都会开辟新的空间地址;
var a = b = {};
var a = b = c = d =10;
d = 9;
console.log(a);// 10;
var a = b = c = {a:1};
c = {};
c.a = 2;
console.log(a);//{a:1}
console.log(c);// {a:2}

对象的增删改查

var obj = {num:1,str:"abc",6:10};

// 1.新增键值对:
// 对象名.属性名=属性值
obj.a = 100;
console.log(obj);
// 对象名['属性名'] = 属性值;
obj["a"] = 100;
obj["12"] = 13;
console.log(obj);
// 如果属性名是数字的话,会按照数字从小到大顺序显示; //2.查询: 如果属性名不存在,那么获取的属性值是undefined;
var v = obj.num;
var b = obj["num"];
console.log(v);//
var c = "num";
var d = obj[c];
var obj = {num:1,str:"abc",6:10}; // 3.修改: 属性没有就是新增,有就是修改;
obj.num = 10;
obj.a = "1";
obj["num"] =100;
console.log(obj); // 4.删除
// 假删除;
//真删除
obj.num = null
// delete delete 对象名.属性名
delete obj.num;
console.log(obj);
var a = obj.num; // in : 判断当前属性名在对象中是否存在;如果存在返回true,不存在返回false;
// "属性名" in 对象名
console.log("num1" in obj);

数组

数组:由数组成员组成,数组成员之间用逗号隔开;
有索引,有length;
var ary = [12,12,47,128,”uu”,{},true];
数组成员都有一个与之对应的索引;从0开始;
有length属性,代表数组成员的个数;
console.log(ary[4]);
console.log(ary.length);//
console.log(ary[ary.length - 1]);
var a = [];
var b = [];
ary[7] = 18;
console.log(ary);

检测

typeof :返回一个字符串;字符串中内容代表当前的数据类型;
typeof NaN -->"number"
typeof null --> "object" 空对象指针
 
局限性: 只能区分基本数据类型;但是不能细分对象数据类型下的对象,数组,正则;
typeof true–>”boolean”
typeof undefined –>”undefined”
instanceof : 检测当前实例是否属于某个类的方法;
var pbj = {a:1};
var aru = []
console.log(pbj instanceof Object);
console.log(pbj instanceof Array);
console.log(aru instanceof Array);
constructor : 检测当前实例的构造函数
Object.prototype.toString.call([]); 最准确的方式;

数据类型之间比较的规律

= : 赋值;

var a = 19;
var a = 20;
var obj = {};
obj.a = 100;

== : 比较; 返回一个布尔值;

console.log(1 == "1");// true
console.log(1 == true);// true
console.log([] == "1");// false
console.log({} == []);// false
console.log(NaN == NaN);// false
console.log(null == null);// true
console.log(null == undefined);// true
console.log(null === undefined);// false
*****NaN 和自己都不相等*****

数据类型比较的规律

  • 对象==对象: 比较的是空间地址
  • 对象==字符串 对象默认调用toString方法,先转字符串,然后再进行比较
  • 对象==布尔: 对象先转字符串,再转数字;布尔直接转数字;
  • 对象== 数字 : 对象先调用toString转换成字符串,然后再转number;
  • 布尔== 数字 : 布尔转数字;
  • 字符串== 数字: 字符串转数字;
  • 布尔== 字符串 : 布尔转数字,字符串也转数字,然后进行比较;
  • null == undefined : true;
  • null 和 undefined 和其他数据类型比较都是false;
console.log({}=={})// false
console.log({}=="");// false
console.log({} == true);// false
console.log([] == 0);// true
console.log([]==false)// true
console.log(true == 10);//false
console.log("" == 0);"//true
console.log(true == "1");// true
console.log("1" == "1px");//false
console.log("" == " ");//false

! : 首先会把后面的值转成布尔值,然后再进行取反;

console.log([] === false);// true
console.log(![] == false);// true;
console.log(!isNaN("12px") == 0);// true;
console.log(!{} == {});// false
({}).toString() "[object Object]"
=== : 绝对比较;不会进行数据类型之间的转换;只要数据类型不一样,就是false;
console.log(1 === "1");//false
console.log({} === {});// false
console.log([] === false);// true
! :后面跟等号,代表不等于;
!== : 绝对不等于    console.log([] !== false)// true
!= : 会进行数据类型之间的比较;

JavaScript基础知识(数据类型)的更多相关文章

  1. Javascript基础知识总结一

    Javascript基础知识总结一 <!DOCTYPE html> <html> <head lang="en"> <meta chars ...

  2. JavaScript基础:数据类型的中的那些少见多怪

    原文:JavaScript基础:数据类型的中的那些少见多怪 Javascript共有6种数据类型,其中包括3个基本数据类型(string,number,boolean).2个特殊数据类型(undefi ...

  3. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

  4. 学习javascript基础知识系列第三节 - ()()用法

    总目录:通过一段代码学习javascript基础知识系列 注意: 为了便于执行和演示,建议使用chrome浏览器,按F12,然后按Esc(或手动选择)打开console,在console进行执行和演示 ...

  5. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个. >.数据类型关键字(12个) char,s ...

  6. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  7. JavaScript基础知识整理

    只整理基础知识中关键技术,旨在系统性的学习和备忘. 1.在 JScript 中 null 和 undefined 的主要区别是 null 的操作象数字 0,而 undefined 的操作象特殊值NaN ...

  8. JavaScript基础知识从浅入深理解(一)

    JavaScript的简介 javascript是一门动态弱类型的解释型编程语言,增强页面动态效果,实现页面与用户之间的实时动态的交互. javascript是由三部分组成:ECMAScript.DO ...

  9. JavaScript基础知识必知!!!

    JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. JS作用:表单验证,减轻服务端的压力:添加页面动画效果:动态更改页面内容:Ajax网络请求. 下面简单介 ...

  10. javascript基础知识笔记-自用

    笔记内容根据个人基础知识不足不明白之处做的记录.主要看的:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript 1.变量,变量的名字又叫标识符 ...

随机推荐

  1. CSAPP Tiny web server源代码分析及搭建执行

    1. Web基础 webclient和server之间的交互使用的是一个基于文本的应用级协议HTTP(超文本传输协议). 一个webclient(即浏览器)打开一个到server的因特网连接,而且请求 ...

  2. iOS 可高度自定义的底部弹框

    技术: iOS Objective-C   概述 一个可以让开发者通过编写 tableView 的内容随心所欲的定制自己想要的底部弹框 详细 代码下载:http://www.demodashi.com ...

  3. 树莓派进阶之路 (038) - P2P 文件下载机

    硬件要求: 树莓派开发板 USB外接硬盘 一. Together 1. 更新安装程序 sudo apt-get update sudo apt-get upgrade sudo apt-get ins ...

  4. java 定时任务之一 @Scheduled注解(第一种方法)

    使用spring @Scheduled注解执行定时任务: 运行!!! 关于Cron表达式(转载) 表达式网站生成: http://cron.qqe2.com/  直接点击 作者:http://blog ...

  5. ffmpeg 、Vlc参数

    ffmpeg.exe -loglevel error -probesize 32 -vsync passthrough -framerate 20 -f gdigrab -i desktop -fil ...

  6. python itertools 模块讲解

    1.介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存. 使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环. - 无限迭代器 itertool ...

  7. csproj文件中copy指令的使用方式

    实际开发中有很多项目需要引用第三方的dll或者资源文件,且文件比较多,在运行时这些文件需要被拷贝到BIN目录. 使用VS自带的"复制到输出目录",似然方便,但是比较不零活,经过多次 ...

  8. hive hbase区别

    1.hive是sql语言,通过数据库的方式来操作hdfs文件系统,为了简化编程,底层计算方式为mapreduce. 2.hive是面向行存储的数据库. 3.Hive本身不存储和计算数据,它完全依赖于H ...

  9. jquery.cookie.js写入的值没有定义

    这个是插件的基本语法,你写的没错,错就错在你肯定是在本地测试的,cookie是基于域名来储存的.意思您要放到测试服务器上或者本地localhost服务器上才会生效.cookie具有不同域名下储存不可共 ...

  10. AOSP中的HLS协议解析

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, AOSP, 源码分析,HttpLiveSource, LiveSession,PlaylistFetcher] ...