JavaScript 第七章总结
前言
主要介绍了关于 JavaScript 中有关 type 的问题。讲了很多关于各种 type 的 idiosyncrasies.
谈谈JavaScript types
在 JavaScript 中,有两种数据类型:
- Primitive Types,包括了数值,字符串,布尔值等等
- Objects,Objects 又包括三个部分
1.一部分是由 JavaScript 自带的一些,比如:Math;
2.另外一部分是 the browser 提供的,比如 document;
3.还有一部分是用户自己 create 的 objects.
##使用 typeof 来确定数据 type
格式 console.log(typeof 123);
typeof 是一个 built-in operator, 可以用它来得到数据的类型。
谈谈 undefined 这个 type
定义:
undefined 是一个值(value),它属于 undefined 类型的变量。
有三种情况属于 undefined :
- variable 的情况:这个 variable 没有进行 initialize
- array 的情况:这个 array item 不存在
- object 的情况: 这个 property 没有 value,或者它的 value 被 delete.
与 null 的区别
null 的定义:null is intended to represent an object that isn't there.
null 的 type: object
场合:当使用 getElementById('id') 的时候,如果不存在这个 id 代表的 element object, 将会返回一个 null 值。
与 NaN 的区别:
NaN 的定义: NaN 是“Not a Number" 的简写形式,它表示 value that is a value but can't be represented
场合:
- var c = Math.sqrt(-9);
- var b = "food" * 1000;
- var a = 0/0 判别 NaN 的方法:由于 NaN 是唯一不等于自身的 value,所以通过 isNaN() 这个 funcition 来判断是否为 NaN.
== 与 === 的区别
定义
在进行 == 的运算的时候,会进行 type conversion, 并遵守一定的 rules,但是 === 是严格意义的判断是否相等(即数据类型和值全都相等)
== 在进行 conversion 的rules 包括两层:
当两个 operands 's type相同:
对它们的 value 进行比较:
当两个 operands 数据类型不同:
先进行类型的转换,在进行比较,有下面3种情况:
- string 和 number:先将 string 转换成 number,然后再将转换成的 number 与 一开始的 number 进行比较。
- boolean 和 any other type:现将 boolean 转换成 number, 然后在进行比较。
- null 和 undefined:these values both essentially represent "no value",(that is, a variable with no value, or an object with no value), so they're considered to be equal.
错题:“true" == true; 返回值为 false.
+,-,*,/ 时进行的 type conversion
+ 进行的 type conversion
规则:当其中的一个 operand 的 type 为 string 类型的时候,+ 会作为一个 concatenate oprator,将另一个 type 的值转换为 value.
其他 arithmetic operator 进行的 type conversion
规则:当其中有 arithmetic operator 的时候,会将其中的 string 类型转换为 number 类型,然后再进行计算。
truthy 和 falsey 类型 的值
定义:They aren't technically true or false, but they behave like they are.
进行判断的 secret: concentrate on knowing what is falsey,and then everything else you can consider truthy.
falsey 的五种类型:
- undefined
- null
- 0
- ""
- NaN
关于 String
String 既是 primitive type, 也属有 object,因此可以用于打印,也可以调用它的一些 property 和 method.
与 string 有关的 property
- length:得到 string 的长度
##与 string 有关的 method - indexOf('string',y),得到相关字符串第一次出现的 index 值,y 值表示从 index 为.. 开始,它是 optional 的
- split("|"),用 delimiter 将字符串对象分开之后,返回一个 含有各个 piece 的 array
- substring(x,y),得字符串 index 从 x 到 y (不包含 y)的值。
JavaScript 第七章总结的更多相关文章
- javascript第七章--DOM
① 节点层次 ② DOM操作技术
- 为什么我要放弃javaScript数据结构与算法(第七章)—— 字典和散列表
本章学习使用字典和散列表来存储唯一值(不重复的值)的数据结构. 集合.字典和散列表可以存储不重复的值.在集合中,我们感兴趣的是每个值本身,并把它作为主要元素.而字典和散列表中都是用 [键,值]的形式来 ...
- [书籍翻译] 《JavaScript并发编程》第七章 抽取并发逻辑
本文是我翻译<JavaScript Concurrency>书籍的第七章 抽取并发逻辑,该书主要以Promises.Generator.Web workers等技术来讲解JavaScrip ...
- 读《编写可维护的JavaScript》第七章总结
第七章 事件处理 7.1 典型用法 作者首先给了个我们一个处理事件的方法.看起来也没啥俩样,不过后来给出的优化方法很值得学习: // 不好的写法 function handleClick(even ...
- JavaScript DOM编程艺术-学习笔记(第七章)
第七章: 1.dom方法创建并且插入标签:(这种方法并没有改变文档的物理内容,而是在改变dom树) ①创建元素节点:createElement(); ②内部前插入:appendChild() ③创建文 ...
- ArcGIS API for JavaScript 4.2学习笔记[24] 【IdentifyTask类】的使用(结合IdentifyParameters类)(第七章完结)
好吧,我都要吐了. 接连三个例子都是类似的套路,使用某个查询参数类的实例,结合对应的Task类,对返回值进行取值.显示. 这个例子是Identify识别,使用了TileLayer这种图层,数据来自Se ...
- 精通Web Analytics 2.0 (9) 第七章:失败更快:爆发测试与实验的能量
精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第七章:失败更快:爆发测试与实验的能量 欢迎来到实验和测试这个棒极了的世界! 如果Web拥有一个超越所有其他渠道的巨大优势,它就 ...
- 【JavaScript权威指南(第五版)】笔记之第一部分 核心javascript (第1章~第12章)
第一章 javascript概述 ①.javascript是一种松散类型语言;也是一种解释型语言; 第二章 词法结构 ①.大小写敏感 第三章 数据类型和值 ①.isFi ...
- Knockout应用开发指南 第七章:Mapping插件
原文:Knockout应用开发指南 第七章:Mapping插件 Mapping插件 Knockout设计成允许你使用任何JavaScript对象作为view model.必须view model的一些 ...
随机推荐
- 为什么预处理和参数化查询可以防止sql注入呢?
在传统的写法中,sql查询语句在程序中拼接,防注入(加斜杠)是在php中处理的,然后就发语句发送到mysql中,mysql其实没有太好的办法对传进来的语句判断哪些是正常的,哪些是恶意的,所以直接查询的 ...
- centos 7 安装使用 redis
1.下载redis,用wget就行,版本在这里找: http://download.redis.io/releases/ 2.安装gcc,tcl,用yum 安装. 3.解压,make ,make in ...
- 【4opencv】识别复杂的答题卡1(主要算法)
一.问题提出 由于GPY进行了纠偏,所以在采集的时候,就已经获得了质量较高的答题卡图片 下一步就是需要从这张图片中,识别出人眼识别出来的那些信息,并且将这个过程尽可能地鲁棒化,提高识别的准确率. 二. ...
- 20145326蔡馨熤《网络对抗》—— Web基础
20145326蔡馨熤<网络对抗>—— Web基础 1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据 ...
- Qt重绘机制
一.引发重绘的事件 1.调用repaint() 2.调用uodate() 二.控件hide或者show 三.其他 ps: repaint函数是立即重绘,没有优化 update会优化,异步重绘,所以如果 ...
- Oracle使用——oracle 忘记用户密码登录
背景 有时候我们忘记了oracle登录的用户密码,甚至是用户名称都不确定,应该怎么登陆呢 操作系统 CentOS7 Oracle12c 操作步骤 使用sqlplus登录系统:sqlplus / a ...
- CSS的再深入3(更新中···)
在前面,我们学习了标准文档流,但在实际制作的过程中,用标准文档流书写显然是不现实的,因此,我们来了解几种脱离标准文档流的方法: 1.float 浮动 float:left/right:(左浮/右浮) ...
- hihoCoder week10 后序遍历
题目链接 https://hihocoder.com/contest/hiho10/problem/1 给出先序 中序 求 后序 #include <bits/stdc++.h> usi ...
- 题解——Codeforces Round #507 (based on Olympiad of Metropolises) T1 (模拟)
暴力模拟即可 就是情况略多 #include <cstdio> #include <algorithm> #include <cstring> using name ...
- (转) Dissecting Reinforcement Learning-Part.2
Dissecting Reinforcement Learning-Part.2 Jan 15, 2017 • Massimiliano Patacchiola 原文链接:https://mpatac ...