在编程语言中,能够表示并操作的值(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章 类型、值和变量的更多相关文章

  1. 【笔记】javascript权威指南-第三章-类型,值和变量

    javascript中的原始类型和对象类型(基本类型和引用类型) //本书是指:javascript权威指南    //以下内容摘记时间为:2013.7.27   计算机程序运行时需要对值(value ...

  2. JavaScript权威指南第03章 类型、值和变量(1)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/huangbin10025/article/details/27953481 类型.值和变量 数据类型 ...

  3. 【笔记】javascript权威指南-第六章-对象

    对象 //本书是指:javascript权威指南    //以下内容摘记时间为:2013.7.28 对象的定义: 1.对象是一种复合值:将很多值(原始值或者对象)聚合在一起,可以通过名字访问这些值. ...

  4. javascript权威指南第11章 DOM扩展

    //javascript 权威指南 第三版 第11章 DOM扩展 //取得body元素 var body = document.querySelector("body"); //取 ...

  5. javascript权威指南第20章 JSON

    //20.1 语法 //JAVASCRIPT 是对JSON数据支持的. //JSON 可以申明三种类型的值 简单值("hello world") 对象({"name&qu ...

  6. javascript权威指南第16章 HTML5脚本编程

    <!DOCTYPE html> <html> <head> <script type="text/javascript" src=&quo ...

  7. javascript权威指南第14章 表单脚本示例代码

    HTML部分 <!DOCTYPE html> <html> <head> <title></title> </head> < ...

  8. javascript权威指南第13章 事件示例代码

    html 部分 <!DOCTYPE html> <html> <head> <title>Event Bubling Example</title ...

  9. javascript权威指南第12章DOM2 DOM3 示例代码

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> Example XHTML ...

随机推荐

  1. sqlserverdatasouce控件如何让添加删除修改自动化

    对于sqlserverdatasouce控件,添加插入修改和删除命令,可以自动删除修改更新数据,不需要编写一行代码,但是有时更新失败,原因在于选中了[开放式并发],这个选中,如果该表与其他的数据表关联 ...

  2. LJN数理化生信奥队自传

    LJN数理化生信奥队, 原名“LJN信奥队”,简称“ljnoit”. 联系方式: QQ:3046036317 QQ群:555088375 (Offical群) 701124785 (Vip群) 邮箱: ...

  3. Ubuntu18下sudo apt install xxx出现问题

    当执行sudo apt install rpm时失败(apt-get也失败),输出如下报错信息: E: Could not get lock /var/lib/dpkg/lock - open (11 ...

  4. 为django项目配置celery的后台启动

    为root用户启动celery创建的脚本,该脚本的拥有者与使用者都必须是root .使用方法为 /etc/init.d/celeryd [start]|[stop]|[kill] 需增加两个文件 /e ...

  5. AStar算法()

    把网上的AStar算法的论述自己实现了一遍,一开始只是最基础的实现.当然,现在AStar算法已经演变出了各种优化的版本,这篇也会基于各种优化不断的更新. 如果对算法不熟悉可以看下Stanford的这篇 ...

  6. python os.walk()遍历文件夹

    转自 http://alanland.iteye.com/blog/612459 via @alanland 今天第一次进行 文件遍历,自己递归写的时候还调试了好久,(主要因为分隔符号的问题),后来发 ...

  7. *args和**kwargs的区别

    *args和**kwargs表示可变长度的参数. *args是元组类型: **kwargs是字典类型: 注意:arg.*args.**kwargs三个参数的位置必须是固定的,否则会报错.

  8. angular $resouse服务

    创建服务 var taskInstancesResource = function ($resource) { var resource = $resource('/ssc-cutover/rest/ ...

  9. admin 自定义字段颜色 并加以简单判断

    在model中class Books(models.Model): nid = models.AutoField(primary_key=True, ) title = models.CharFiel ...

  10. shell练习题4

    需求如下: 系统logrotate工具,可以完成日志切割.归档.写一个shell脚本实现类似功能. 举例:假如服务的输出日志是1.log,要求每天归档一个,1.log第二天就变成1.log.1, 第三 ...