javascript面向对象编程笔记(基本数据类型,数组,循环及条件表达式)
javascript面向对象编程指南
最近在看这本书,以下是我的笔记,仅供参考。
第二章 基本数据类型、数组、循环及条件表达式
2.1 变量
区分大小写
2.3 基本数据类型
数字:包括浮点数与整数
字符串:一序列由任意数量字符组成的序列
布尔值:true或false
undefined:试图访问一个不存在的变量,会得到一个特殊值undefined;使用一个未初始化的变量也会如此,javascript会自动将变量在初始化前值设定为undefined
null:另一种只包含一个值的特殊数据类型。所谓的null值,通常是指没有值、空值,不代表任何东西。
注意:null与undefined最大的不同在于,被赋予null的变量通常被认为是已经定义了的,只不过它不代表任何东西。
任何不属于上述五种基本类型的值都会被认为是一个对象。
2.3.1 typeof 查看类型操作符
typeof:查看类型操作符,返回一个代表数据类型的字符串,它的值包括:“number”、“string”、“boolean”、“undefined”、“object”、“function”。
2.3.2 数字
八进制:数字以0开头
十六进制:用0x前缀表示一个十六进制值(简称为hex)
指数表示法:1e+1 表示数字1后面加一个0,也就是10
也可以这样理解:2e+3为数字2的小数点向右移三位
2e+3 -> 2.0.0.0.->2000
同理2e-3为数字2的小数点向左移三位
2e-3 -> 0.0.0.2.->0.002Infinity:代表超出了javascript处理范围的数值,但Infinity依然是一个数字。
1e+309->Infinity
1e+308->1e+308另外,任何数除0也为Infinity。Infinity表示的是最大数(或比最大数还要大的数),Infinity前加一个负号,表示最小数(比最小数还要小的数)
Infinity-Infinity->NaN
-Infinity+Infinity->NaN而且,Infinity与其他任何操作数执行任何算术运算结果都是Infinity。
NaN(not a number)
typeof NaN->"number"
如果在对一个假定的数字执行某个操作时失败,会得到一个NaN。
var a=10*"f";->NaN而且NaN是具有传染性的,只要算术运算中存在一个NaN,整个运算就会失败。
1+2+NaN -> NaN
2.3.2 字符串
一对单引号或者双引号之间的任何值会被视为一个字符串。两个字符串之间使用加号是一个字符串拼接操作,返回是两个字符串拼接之后的结果(最好确保所有操作数都是字符串)。
字符串转换
>>>var s='1';s=3*s;typeof s;
"number"
>>>s
3
>>>var s='1';s++;typeof s;
"number"
>>>s
2
//数字字符串转换为数字(更好是调用parseInt函数)
>>>var s='100';s++;typeof s;
"string"
>>>s=s*1;
101
>>>typeof s;
"number"
//转换失败
>>>var d='101 dalmatians';
>>>d*1
NaN
//其他类型转换为字符串
>>>var n=1;
>>>typeof n;
"number"
>>>n=""+n;
"1"
>>>typeof n;
"string"
2.3.4 布尔值
两种值:true和false
逻辑运算符:! && ||
除下列特定值(falsy)以外(它们将被转换为false),其余大部分值(truthy)在转换为布尔值时都为true。
空字符串“”
null
undefined
数字0
数字NaN
布尔值false
惰性求值:连续的逻辑操作中,操作结果在最后一个操作完成之前就已经明确了的话,该操作往往不必再继续执行了,因为不会对最终结果产生任何影响。
在一个逻辑表达式中遇到一个非布尔型的操作数,那么该操作数的值会成为该表达式所返回的结果。
>>>true||"something"
true
>>>true&&"something"
"something"
不确定某个变量是否已经被定义:var mynum=mynum||10;
比较运算符
注意:NaN == NaN值为false
2.3.5 undefined与null
访问某个不存在或未赋值的变量时会得到undefined值。javascript会自动将声明时没有进行初始化的变量设为undefined。
//试图使用一个不存在的变量,会得到这样错误信息
>>>foo
foo is not defined
>>>typeof foo
"undefined"
//声明一个变量时没对其赋值,调用该变量时不会出错,但typeof仍为undefined
>>>var somevar;
>>>somevar
>>>typeof somevar
"undefined"
而null值完全是另外一回事,它不能通过javascript来自动赋值,只能由我们的代码来完成。
>>>var somevar=null;
null
>>>somevar
null
>>>typeof somevar
"object"
尽管两者差别微乎其微,但有时也很重要。
>>>var i=1+undefined;i;
NaN
>>>var i=1+null;i;
1
这是因为null和undefined在被转换为其他基本类型时,方法存在一定区别。
转换成数字:
>>>1*undefined
NaN
>>>1*null
0
转换成布尔值:
>>>!!undefined
false
>>>!!null
false
转换成字符串
>>>""+null
"null"
>>>""+undefined
"undefined"
>>>undefined == null
true
2.5数组
声明一个空数组变量:
>>>var a=[];
>>>typeof a;
"object"
>>>var a=[1,2,3];
输入数组名,就能打印该数组中的所有内容
>>>a
[1,2,3]
访问数组a首元素
>>>a[0]
1
2.5.1增加、更新数组元素
//更新
>>>var a=[1,2,3];
>>>a[2]='three';
>>>a
[1,2,"three"]
//新增
>>>a[3]="four";
"four"
>>>a
[1,2,"three","four"]
如果新元素被添加的位置与原数组末端之间存在一定的间隔,那么之间的元素将会被自动设定为undefined值。
>>>var a=[1,2,3];
>>>a[6]='new';
"new"
>>>a
[1,2,3,undefined,undefined,undefined,"new"]
2.5.2删除元素
delete操作符:不能真正移除一个元素,但它能将其设定为undefined。元素被删除后,数组的长度并不会受到影响。
>>>var a=[1,2,3];
>>>delete a[1];
true
>>>a
[1,undefined,3]
>>>a.length
3
2.5.3 数组的数组
通常情况下,我们可以在数组中存放任何类型的值,包括另一个数组。
>>>var a=[1,"two",false,null,undefined];
>>>a
[1,"two",false,null,undefined]
>>>a[5]=[1,2,3];
[1,2,3]
>>>a
[1,"two",false,null,undefined,[1,2,3]]
>>>a[5][1]
2
//可以通过这种访问数组方式来获取某个字符串中的特定字符
>>>var s='one';
>>>s[0];
"o"
>>>s[1];
"n"
2.6 条件与循环
if条件表达式
检查变量是否存在
检查程序中是否存在一个叫做somevar的变量,如果存在,就将变量result设置为yes。
>>>var result='';
>>>if(somevar){result='yse';}
somevar is not defined
>>>result;
""
说明:首先,该段代码会产生一个警告信息,显得有些多次一举;其次,就算if(somevar)返回的是false,也并不意味着就一定没有定义,它也可以是任何一种被初始化为falsy值(如false或0)的已声明变量。
所以在检查变量是否存在时,更好的选择是使用typeof。
>>>if(typeof somevar!=="undefined"){result='yes';}
>>>result;
""
需要注意的是,如果这里的somevar是一个已经声明但尚未赋值的变量,结果也是相同的。也就是说,实际上是在用typeof测试一个变量是否已经被初始化(或者说测试变量值是否为undefined)。
>>>var somevar;
>>>if(typeof somevar!=="undefined"){result='yes';}
>>>result;
"" >>>somevar=undefined
>>>if(typeof somevar!=="undefined"){result='yes';}
>>>result;
""
三元运算符:var result=(a===1)?"a is one":"a is ont noe";
switch语句
while、do-while、for,以及for-in循环。
for-in循环最适合的场合是对象以及常规for循环的数组。
javascript面向对象编程笔记(基本数据类型,数组,循环及条件表达式)的更多相关文章
- javascript面向对象编程笔记
对象:一切事物皆是对象.对象是一个整体,对外提供一些操作.比如说一个收音机是一个对象,我们不需要知道它的内部结构是什么,只需要会使用外部的按钮就可以使用收音机. 面向对象:面向对象语言的标志是他们都有 ...
- javascript面向对象编程笔记(函数)
第三章 函数 3.1 什么是函数 一般来说,函数声明通常由以下几部分组成: function子句 函数名称 函数所需参数 函数体 return子句.如果某个函数没有显示的返回值,默认它的返回值为und ...
- javascript面向对象编程笔记(函数之闭包)
3 函数 3.5 闭包(closures) 3.5.1 作用域链 与很多程序设计语言不同,javascript不存在大括号级的作用域,但它有函数作用域,即在函数内定义的变量在函数外是不可见的.但如果该 ...
- 读书笔记-JavaScript面向对象编程(一)
PDF下载链接: http://pan.baidu.com/s/1eSDSTVW 密码: 75jr 第1章 引言 1.1 回顾历史 1.2 变革之风 1.3 分析现状 1.4 展望未来 1.5 面向对 ...
- 《JavaScript面向对象编程指南(第2版)》读书笔记(一)
目录 一.对象 1.1 获取属性值的方式 1.2 获取动态生成的属性的值 二.数组 2.1 检测是否为数组 2.2 增加数组长度导致未赋值的位置为undefined 2.3 用闭包实现简易迭代器 三. ...
- 《JavaScript面向对象编程指南(第2版)》读书笔记(二)
<JavaScript面向对象编程指南(第2版)>读书笔记(一) <JavaScript面向对象编程指南(第2版)>读书笔记(二) 目录 一.基本类型 1.1 字符串 1.2 ...
- 《JavaScript面向对象编程指南》读书笔记②
概述 <JavaScript面向对象编程指南>读书笔记① 这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西.那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的 ...
- 《JavaScript面向对象编程指南》读书笔记①
概述 JavaScript快忘完了,想看一本专业书拾遗,所以看了这本<JavaScript面向对象编程指南>. 个人觉得这本书讲的很透彻很易懂,一些原来有疑惑的地方在这本书里面豁然开朗,看 ...
- JavaScript面向对象编程学习笔记
1 Javascript 面向对象编程 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例 ...
随机推荐
- [POI2011]IMP-Party
题目 不难发现\(\frac{2}{3}n-\frac{1}{3}n=\frac{1}{3}n\)(雾 一个团要求点之间两两有边,于是我们枚举两个点,如果这两个点之间没有边相连,那么就删掉这两个点,由 ...
- 2018湘潭大学程序设计竞赛【A】
题目链接:https://www.nowcoder.com/acm/contest/105/A 题意:给你起始和结束的天时分,让你算总秒数. 题解:输入格式.注意long long.签到题. #inc ...
- C预处理之宏定义
#include <stdio.h> //定义不带参数的宏 #define PI 3.14 /*********************************************** ...
- JS数组 选定元素slice() slice() 方法可从已有的数组中返回选定的元素。 语法 arrayObject.slice(start,end)
选定元素slice() slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数说明: 1.返回一个新的数组,包含从 start 到 ...
- sql 左连接与右连接
假设有A,B两个表. 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: bID ...
- Centos6.5升级安装openssh7.7p1
Centos6.5升级安装openssh7.7p1 关于OpenSSH漏洞 2016年1月14日OpenSSH发布官方公告称, OpenSSH Client 5.4~7.1 版本中未公开说明的功 ...
- 转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ...
- [转]WPF中的导航框架
有的时候,我们需要一个支持页面跳转的UI,例如文件浏览器,开始向导等.对于这样的界面,简单的可以使用ContentControl + ContentTemplateSelector的方式来实现,但是有 ...
- leetcode-168周赛-1296-划分数字为连续数字的集合
题目描述: 自己的提交: class Solution: def isPossibleDivide(self, nums: List[int], k: int) -> bool: c = col ...
- UML关系类图
在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...