2019-05-27 JS(绪论、变量)

(本文摘录于阮一峰老师所写文章,https://wangdoc.com/javascript/basic/index.html,作个人学习使用。)

绪论

1、JavaScript 是一种轻量级的脚本语言。JavaScript 本身不提供任何与 I/O(输入/输出)相关的 API,都要靠宿主环境(host)提供,所以 JavaScript 只合适嵌入更大型的应用程序环境,去调用宿主环境提供的底层 API。

目前,已经嵌入 JavaScript 的宿主环境有多种,最常见的环境就是浏览器,另外还有服务器环境,也就是 Node 项目。
以浏览器为例,它提供的额外 API 可以分成三大类:
浏览器控制类:操作浏览器
DOM 类:操作网页的各种元素
Web 类:实现互联网的各种功能

2、应用程序接口(英语:Application Programming Interface,缩写:API;又称为应用编程接口)是软件系统不同组成部分衔接的约定。
文档对象模型(Document Object Model,简称DOM),将web 页面与到脚本或编程语言连接起来。

变量、数值、字符串、字符集

3、变量提升
JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升(hoisting)。

4、标识符命名规则如下。
第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号($)和下划线(_)。
第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字0-9。

5、JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值,本教程不涉及。)

数值(number):整数和小数(比如1和3.14)
字符串(string):文本(比如Hello World)。
布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
null:表示空值,即此处的值为空。
对象(object):各种值组成的集合。
通常,数值、字符串、布尔值这三种类型,合称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。对象则称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。

对象是最复杂的数据类型,又可以分成三个子类型。
狭义的对象(object)
数组(array)
函数(function)

6、null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。
undefined表示“未定义”。

7、如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefined
null
false
0
NaN(not a number,还属于number类型,不等于任何值)
""或''(空字符串)

8、JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)。容易造成混淆的是,某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。

9、parseInt()、parseFloat()、isNaN()

10、字符串转义
html里字符串用双引号,js里一般用单引号。

11、JavaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。字符可写成\uxxxx的形式,其中xxxx代表该字符的 Unicode 码点。
每个字符在 JavaScript 内部都是以16位(即2个字节)的 UTF-16 格式储存。也就是说,JavaScript 的单位字符长度固定为16位长度,即2个字节。
UTF-16 有两种长度:对于码点在U+0000到U+FFFF之间的字符,长度为16位(即2个字节,length为1);对于码点在U+10000到U+10FFFF之间的字符,长度为32位(即4个字节,length为2),而且前两个字节在0xD800到0xDBFF之间,后两个字节在0xDC00到0xDFFF之间。

对象

12、对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名)。
对象的每一个键名又称为“属性”(property),它的“键值”可以是任何数据类型。如果一个属性的值为函数,通常把这个属性称为“方法”,它可以像函数那样调用。

13、对象的引用
如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。
但是,这种引用只局限于对象,如果两个变量指向同一个原始类型的值。那么,变量这时都是值的拷贝。

14、读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符(键名必须要在引号里面,以防当作变量处理),数值键名不能使用点运算符(因为会被当成小数点)。
Object.keys;//查看所有属性
Object.delete;//删除属性(不能删除无法删除的,也不能删除继承的属性)
for...in ;//遍历所有可遍历的属性,包括继承的属性,可以通过hasOwnProperty来判断是否自身的属性。

函数

15、
function 函数名(传入参数){
………………
} //函数的声明

var print = function x(){
console.log(typeof x);
}; //函数表达式,赋值语句。此处x只在函数体内部可用,指代函数体本身(与函数声明近似等价)

如果同一个函数被多次声明,后面的声明就会覆盖前面的声明。(存在函数名提升,果同时采用function命令和赋值语句声明同一个函数,最后总是采用赋值语句的定义)

JavaScript 语言将函数看作一种值,与其它值(数值、字符串、布尔值等等)地位相同。凡是可以使用值的地方,就能使用函数。

16、与全局作用域一样,函数作用域内部也会产生“变量提升”现象。var命令声明的变量,不管在什么位置,变量声明都会被提升到函数体的头部。
数执行时所在的作用域,是定义时的作用域,而不是调用时所在的作用域。

你可能感兴趣的:(2019-05-27 JS(绪论、变量))