JavaScript权威指南--第3章 类型、值和变量
在编程语言中,能够表示并操作的值(value)的类型称作数据类型(type).使用变量来储存值。JavaScript中数据类型有两种:原始类型(primitive type/基本数据类型)和对象类型(object type/引用数据类型)。
数字
整形直接量
十进制整数
十六进制值(0x为前缀)
严格模式下,不支持八进制(0为前缀)
浮点型直接量
整数+小数点( . ) + 小数部分: 3.14
指数计数法: 6.2e5 === 620000
JavaScript中的算数运算
基本运算符:加 +、减 -、乘 *、除 /、取余 %
复杂运算符:Math对象的属性定义函数和常量
溢出:Infinity,-Infinity(超过JavaScript所能表示的数字上限,基于其的运算结果还是无穷值)
下溢:0,-0 (运算结果无限接近于0)
0/2; // 0 2/0; // Infinity
-2/0; // -Infinity
0/0; // NaN
NaN与任何值都不相等包括他自己(判断一个变量是否为notanumber 使用x != x)
0 === -0; // true
1/0 == 1/-0; // false
二进制浮点数和四舍五入错误
使用二进制表示法可精确表示1/2,1/8,1/1024
0.3-0.2 == 0.2-0.1; // false
日期和时间
Date()
var before = new Date(2011, 0, 1); // 2011年1月1日
var after = new Date(2011, 0, 1, 10, 10, 30); // 2011年1月1日10点10分30秒
var now = new Date(); // 获取现在的日期和时间
var elapse = now - before; // 日期减法,计算时间间隔的毫秒数
after.getFullYear(); // 获取年 2011
after.getMonth(); // 获取月(从0开始计数) 0
after.getDate(); //获取日(从1开始计数) 1
after.getDay(); // 获取星期(0代表周日,5代表星期一) 6
after.getHours(); // 获取小时 10
after.getUTCHours(); //基于时区的小时 2
文本
字符串(string)是一组由16位值组成的不可变的有序序列。
字符串直接量
单引号(' ')或双引号(" ")
字符串拆行:每一行以反斜线(\)结束
转义 \(英文转义 today\'s)
转义字符
转义字符 | 含义 |
\o | NULL字符(\u0000) |
\b | 退格符(\u0008) |
\t | 水平制表符(\u0009) |
\n | 换行符(\u000A) |
\v | 垂直制表符(\u000B) |
\f | 换页符(\u000C) |
\r | 回车符(\u000D) |
\" | 双引号(\u0022) |
\' | 撇号或单引号(\u0027) |
\\ | 反斜线(\u005C) |
字符串的使用
字符串拼接 +
字符串长度 length
常用字符串调用方法:
var s = 'hello world';
s.charAt(3); // "l"
s.substring(1, 5); // "ello"
s.slice(1, 5); // "ello"
s.slice(-3); // "rld"
s.indexOf('l'); //
s.lastIndexOf('l'); //
s.indexOf('l', 3); //
s.split(' '); // ["hello", "world"]
s.replace('h', 'H'); // "Hello world"
s.toUpperCase(); // "HELLO WORLD"
模式匹配
RegExp()
var text = "testing: 1, 2, 3";
var pattern = /\d+/g; // 匹配所有包含一个或多个数字的实例
pattern.test(text); // true
text.search(pattern); //
text.match(pattern); // ["1", "2", "3"]
text.replace(pattern, '#'); // "testing: #, #, #"
text.split(/\D+/); // ["", "1", "2", "3"]
布尔值
true:
false:undefined,null,0,-0,NaN,“”(空字符串)
null和undefined
null == undefined; // true
null === undefined; // false
全局对象
包装对象
不可变的原始值和可变的对象引用
原始值(undefined,null,布尔值,数字和字符串)不可改变;
原始值的比较是值的比较:值相等时就相等,在字符串中,长度相等且每个索引的字符都相等时才相等
对象(object、array,function):值可修改,储存的是指向值的内存地址
对象的比较并非值的比较:
var o = {x:1}, q = {x:1}
o == q // false
o === q // false
var m = [], n = []
n == m // false
n === m // false
var a = [];
var b = a;
b[0] = 1;
a[0] //
a === b // true
类型转换
值(value) | 转换为字符串 | 转换为数字 | 转换为布尔值 | 转换为对象 |
undefined | "undefined" | NaN | false | TypeError |
null | "null" | 0 | false | TypeError |
true | "true" | 1 | true | new Boolean(true) |
false | "false" | 0 | false | new Boolean(false) |
""(空字符串) | "" | 0 | false | new String("") |
"1.2"(非空,数字) | "1.2" | 1.2 | true | new String("1.2") |
"abf"(非空,非数字) | "abf" | NaN | true | new String("abf") |
0 | "0" | false | new Number(0) | |
-0 | "0" | false | new Number(-0) | |
NaN | "NaN" | false | new Number(NaN) | |
Infinity | "Infinity" | true | new Number(Infinity) | |
-Infinity | "-Infinity" | true | new Number(-Infinity) | |
1(无穷大,非零) | "1" | true | new Number(1) | |
{}(任意对象) | ① | ② | true | |
[](任意数组) | "" | 0 | true | |
[12](数字元素) | "12" | 12 | true | |
['as'](其他元素) | join() | NaN | true | |
function(){}(任意函数) | ③ | NaN | true |
转换和相等性 ( == )
一个值转化为另一个值并不代表两个值相等。'=='运算符从不试图将其他操作数转化为布尔值。
null == undefined // true
"0" == 0 // true
0 == false // true
"0" == false // true
5 undefined == false // false
显示类型转化
Number()、String()、Boolean([ ])、Object()、toString()
x+ "" // 等价于String(x)
+x // 等价于Number(x)
!!x // 等价于Boolean(x)
parseInt():解析整数。若第一个非空字符不是数字直接量,将返回NaN
parseFloat():解析整数和浮点数。若第一个非空字符不是数字直接量,将返回NaN
对象转化为原始值
对象到布尔值:所有的对象都转化为true
对象到字符串和对象到数字:通过调用待转换的对象的一个方法来完成(本地对象。宿主对象)
toString()
valueOf():如果存在任意原始值,他就默认将对象转化为表示他的原始值。对象是复合值简单返回对象本身。
变量声明
var,let,const
使用var语句重复声明变量是合法且无害的。
变量作用域
全局作用域,局部作用域
定义全局作用域可以省略var
在函数体内,局部变量的优先级高于同名的全局变量
函数作用域和声明提前
变量作用域是指在函数内声明的所有变量在函数体内都是可见的。意味着函数里生命的所有变量(不涉及赋值)都被提前到函数体的顶部。
作为属性的变量
全局变量是全局对象的属性。
使用var声明的变量创建的属性是不可配置的
作用域链
作用域链是一个对象列表或链表。
JavaScript权威指南--第3章 类型、值和变量的更多相关文章
- 【笔记】javascript权威指南-第三章-类型,值和变量
javascript中的原始类型和对象类型(基本类型和引用类型) //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.27 计算机程序运行时需要对值(value ...
- JavaScript权威指南第03章 类型、值和变量(1)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/27953481 类型.值和变量 数据类型 ...
- 【笔记】javascript权威指南-第六章-对象
对象 //本书是指:javascript权威指南 //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...
- javascript权威指南第11章 DOM扩展
//javascript 权威指南 第三版 第11章 DOM扩展 //取得body元素 var body = document.querySelector("body"); //取 ...
- javascript权威指南第20章 JSON
//20.1 语法 //JAVASCRIPT 是对JSON数据支持的. //JSON 可以申明三种类型的值 简单值("hello world") 对象({"name&qu ...
- javascript权威指南第16章 HTML5脚本编程
<!DOCTYPE html> <html> <head> <script type="text/javascript" src=&quo ...
- javascript权威指南第14章 表单脚本示例代码
HTML部分 <!DOCTYPE html> <html> <head> <title></title> </head> < ...
- javascript权威指南第13章 事件示例代码
html 部分 <!DOCTYPE html> <html> <head> <title>Event Bubling Example</title ...
- javascript权威指南第12章DOM2 DOM3 示例代码
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Example XHTML ...
随机推荐
- Android ORC文字识别之识别身份证号等(附源码)
项目地址https://github.com/979451341/OrcTest 我们说说实现这个项目已实现的功能,能够截图手机界面的某一块,将这个某一块图片的Bitmap传给tess-two的代码来 ...
- ps切图
1.选择视图然后标尺 ctrl+R 拉辅助线,选择矩形选框工具,点击窗口,选择信息,在右上角点击面板选项,选择像素,获取宽高(width 横向为宽:height纵向为高) 2.视图:清楚参考线 Ctr ...
- Redis-安装篇
Redis Cluster搭建 需求:创建6个节点,3主3从127.0.0.1:6379127.0.0.1:6380127.0.0.1:6381127.0.0.1:6382127.0.0.1:6383 ...
- 小菜鸟从0基础开始学Linux系统
随着当今信息时代的迅速发展,Linux凭借其诸多优势从操作系统中脱颖而出,受到越来越多电脑用户的青睐.Linux是一个集安全.稳定.自由等众多优点于一身的操作系统,不可思议的是这么好的系统还是免费的! ...
- asp.net IHttpModule浅析
在asp.net程序中,我们除了使用系统自带的HttpModule模块,还可以自己定义一些自己的HttpModule接口模块.一个asp.net程序可以接收多个HttpModule模块. 众所周知,a ...
- php处理ajax请求,ajax+php实现跨域
第一种方法通过设置Access-Control-Allow-Origin来实现跨域 1.首先要了解什么是域? 什么是域,简单来说就是协议+域名或地址+端口,3者只要有任何一个不同就表示不在同一个域.跨 ...
- # -*- coding: utf-8 -*-
-- coding: utf-8 -- import scrapy from jobscrawler_qianchengwuyou.items import JobscrawlerQianchengw ...
- 阶段01Java基础day26反射
27.01_反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载 就是指将class文 ...
- Tomcat基本配置
第二十六课 Tomcat基本配置 目录 一. Tomcat介绍 二. 安装jdk 三. 安装Tomcat 四. 配置Tomcat监听80端口 五. 配置Tomcat虚拟主机 六. Tomcat日志 七 ...
- Oracle学习DayTwo
一.创建表和管理表 1.表名和列名的命名规则 必须以字母开头必须在 1–30 个字符之间必须只能包含 A–Z, a–z, 0–9, _, $, 和 #必须不能和用户定义的其他对象重名必须不能是Orac ...