JavaScript 苑,追忆。。。
Posted 钟爱一根
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 苑,追忆。。。相关的知识,希望对你有一定的参考价值。
javascript概述
JavaScript的历史
- 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)
- Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript
- 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript.
- 为了统一三家,ECMA(欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。EcmaScript是规范.
ECMAScript
尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的:
- 核心(ECMAScript)
- 文档对象模型(DOM)Document object model(整合js,css,heml)
- 浏览器对象模型(BOM)Browser object model(整合js和浏览器)
- Javascript在开发中绝大多数情况是基于对象的,也是面向对象的
简单地说,ECMAScript描述了一下内容:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 运算符
- 对象(封装 继承 多态)基于对象的语言,使用对象
JavaScript的引入方式
1
2
3
4
5
6
|
{ #1 直接编写#} <script> alert( \'hello yuan\' ) </script> { #2 导入文件#} <script src= "hello.js" ></script> |
二 JavaScript的基础
2.1 变量
1
2
3
|
x=5 y=6 z=x+y |
在代数中,我们使用字母(比如x)来保存值(比如5)。
通过上面的表达式z=x+y,我们能够计算出z的值为11。
在JavaScript中,这些字母被称为变量。
0变量是弱类型的(很随便);
1 声明变量时不使用声明变量类型,全都使用var关键字;
1
|
var a; |
2 一行可以声明多个变量,并且可以是不同类型。
1
|
var name= "yuan" ,age=20,job= "lecturer" ; |
3 (了解)声明变量时,可以不用var,如果不用var那么它是全局变量。
4 变量命名,首字符只能是字母,下划线,$美元符三选一,且区分大小写,x与X是两个变量
5 变量还应遵守以下某条著名的命名规则:
1
2
3
4
5
6
7
8
9
|
Camel 标记法 首字母是小写的,接下来的字母都是大写字符开头,例如: var myTestValue = 0, mySecondValue = "hi" ; Pascal 标记法 首字母是大写的,接下来的字母都以大写字符开头。例如: Var MyTestValue = 0,MySecondValue = "hi" ; 匈牙利类型标记法 在以Pascal标记法命名的变量前附加一个小写字母(或小写字母序列),说明该变量的类型。例如,i表示整数,s表示字符串,如下所示: Var iMyTestValue = 0, sMySecondValue = "hi" ; |
注意:
1
2
3
4
5
6
7
8
9
10
11
|
function func1(){ var a = 123; b=456 } func1(); // alert(a); // alert(b); // 不推荐 |
2.2 基础规范
1 每行结束可以不加分号,没有分号会以换行符作为每行的结束
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
a=1;b=2; a=1 b=2;------错误 a=1 b=2 //推荐 a=1; b=2; { a=1; b=2; //推荐加tab a=1; b=2; } |
2 注释 支持多行注释和单行注释。/* */ //
3 使用{}来封装代码块
2.3 常量和标识符
常量:直接在程序中出现的数据值
标识符(包括变量):
- 由不以数字开头的字母、数字、下划线(_)、美元符号($)组成
- 常用于表示函数、变量等的名称、
- 例如:_abc,$abc,abc,abc123是标识符,而1abc不是
- JavaScript语言中代表特定含义的词称为保留字,不允许程序再定义为标识符
2.4 数据类型
数字类型(Number)
1
2
3
4
5
6
|
简介 最基本的数据类型 不区分整形数值和浮点型数值 所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式 能表示的最大值是±1.7976931348623157 x 10308 能表示的最小值是±5 x 10 -324 |
整数:
在JavaScript中10进制的整数由数字的序列组成
精确表达的范围是-9007199254740992 (-253) 到 9007199254740992 (253)
超出范围的整数,精确度将受到影响
浮点数:
使用小数点记录数据
例如:3.4,5.6
使用指数记录数据
例如:4.3e23=4.3x10^23
16进制和18进制数的表达
16进制数据前面加上0x,八进制前面加0
16进制数是由0-9,A-F等16个字符组成
8进制数由0-7等8个数字组成
16进制和8进制与2进制的换算
1
2
|
#2进制:1111 0011 1101 0100 <-----> 16进制:0xF3D4 <-----> 10进制:62420 #2进制:1 111 001 111 010 100 <----> 8进制:0171724 |
字符串(String)
1
2
3
4
5
6
7
|
简介 是由Unicode字符、数字、标点符号组成的序列 字符串常量首尾由单引号和双引号括起 JavaScript中没有字符类型 常用特殊字符在字符串中的表达 字符串中部分特殊字符必须加上右划线\\ 常用的转义符 \\n:换行 \\\':单引号 \\":双引号 \\\\:右划线 |
String数据类型的使用
- 特殊字符的使用方法和效果
- Unicode的插入方法
1
2
3
4
|
<script> var str= "\\u4f60\\u597d\\n欢迎来到\\"JavaScript世界\\"" ; alert(str); </script> |
布尔值(Boolean)
1
2
3
4
5
6
7
8
9
|
简介 Boolean类型仅有两个值: true 和 false ,也代表1和0,实际运算中 true =1, false =0 布尔值也可以看作on/off、yes/no、1/0对应 true / false Boolean值主要用于JavaScript的控制语句,例如 if (x==1){ y=y+1; } else { y=y-1; } |
Null & Undefined
1
2
3
4
5
6
7
8
9
10
|
Undefined 类型 Undefined 类型只有一个值,即undefined。当声明变量未初始化时,该变量的默认值是undefined。 当函数无明确返回值是,返回的也是值 "undefined" ; Null 类型 另一种只有一个值的类型是Null,它只有一个专用值 null ,即它的字面量。值undefined实际上是从值 null 派生带来的,因此 ECMAScript 把它们定义为相等的。 尽管这两个值相等,当它们的含义不同。undefined 是声明了变量但未对其初始化赋予该变量的值, null 则用于表示尚未存在的对象(在讨论 typeof 运算符时,简单地介绍过这一点)。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null 。 var person= new Person() var person= null |
数据类型转换
1
2
3
4
5
6
7
8
9
10
|
JavaScript属于松散类型的程序语言 变量在声明的时候并不需要指定数据类型 变量只有在赋值的时候才会确定数据类型 表达式中包含不同类型数据则在计算过程中会强制进行类别转换 数字+字符串:数字转换为字符串 数字+布尔值: true 转换为1, false 转换为0 字符串+布尔值:布尔值转换为字符串 true 或 false |
强制类型转换函数
1
2
3
4
5
6
7
|
函数parseInt:强制类型转换成整数 例如parseInt( "6.12" )=6; pariseInt( "12a" )=12; parseInt( "a12" )=NaN; parseInt( "la2" )=1 函数parseFloat:强制转换成浮点数 parseFloat( "6.12" )=6.12 函数eval:将字符串强制转换为表达式并返回结果 eval( "1+1" )=2; eval( "1<2" )= true |
类型查询函数(typeof)
ECMAScript 提供了 typeof 运算符来判断一个值是否在某种类型的范围内。可以用这种运算符判断一个值是否表示一种原始类型:如果它是原始类型,还可以判断它表示哪种原始类型。
1
2
3
4
5
6
|
函数 typeof :查询数值当前类型(string / number / boolean / object) 例如 typeof ( "test" +3) "string" 例如 typeof ( null ) "object " 例如 typeof ( true +1) "number" 例如 typeof ( true - false ) "number" |
ECMAScript 运算符
ECMAScript 算数运算符
1
2
3
4
5
|
加(+)、 减(-)、 乘(*) 、除(/) 、余数(% ) 加、减、乘、除、余数和数学中的运算方法一样 例如:9/2=4.5,4*5=20,9%2=1 -除了可以表示减号还可以表示负号 例如:x=-y +除了可以表示加法运算还可以用于字符串的连接 例如: "abc" + "def" = "abcdef" |
递增(+ +)、递减(- -)
1
2
3
4
5
6
7
8
9
|
假如x=2,那么x++表达式执行后的值为3,x--表达式执行后的值为1 i++相当于i=i+1,i--相当于i=i-1 递增和递减运算符可以放在变量前也可以放在变量后:--i var i=1; console.log(i++); console.log(++i); console.log(i--); console.log(--i); |
一元加减法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
var a=1; var b=1; a=-a; //a=-1 var c= "10" ; alert( typeof (c)); c=+c; //类型转换 alert( typeof (c)); // ------------------- var d= "yuan" ; d=+d; alert(d); //NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据 alert( typeof (d)); //Number //NaN特点: var n=NaN; alert(n>3); alert(n<3); alert(n==3); alert(n==NaN); alert(n!=NaN); //NaN参与的所有的运算都是false,除了!= |
ECMAScript 逻辑运算符
1
2
3
4
5
6
7
8
|
等于 ( == ) 、不等于( != ) 、 大于( > ) 、 小于( < )
大于等于(>=) 、小于等于(<=) 与 (&&) 、或(||) 、非(!) && 1 = 1 1 || 1 = 1 && 0 = 0 1 || 0 = 1 && 0 = 0 0 || 0 = 0 !0=1 !1=0 |
逻辑OR运算符(||)
与逻辑AND运算符相似,如果某个运算符不是Boolean值,逻辑OR运算并不一定返回 Blooean 值
ECMAScript 赋值运算符
1
2
3
4
5
6
7
|
赋值 = JavaScript中=代表赋值,两个等号==表示判断是否相等 例如,x=1表示给x赋值为1 if (x==1) {...}程序表示当x与1相等时 if (x== "on" ) {...}程序表示当x与 "on" 相等时 配合其他运算形成的简化表达式 例如 i+=1 相当于 i=i+1,x&=y 相当于 x=x&y |
实例:
1
2
3
4
5
6
7
8
9
10
|
2== “2” 2=== “2” 4!= “4” 4!== “4” var a = 2; var b = 4; var c = a<b | --b>--a; var c = a<b || --b>--a; var c = a<b &&--b>--a; var c = a<b & --b>--a; |
ECMAScript等性运算符
执行类型转换的规则如下:
- 如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
- 如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
- 如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
- 如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
在比较时,该运算符还遵守下列规则:
- 值 null 和 undefined 相等。
- 在检查相等性时,不能把 null 和 undefined 转换成其他值。
- 如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
- 如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等。
ECMAScript 关系运算符(重要)
1
2
|
var bResult = "Blue" < "alpha" ; alert(bResult); //输出 true |
在上面的例子中,字符串 "Blue" 小于 "alpha",因为字母 B 的字符代码是 66,字母 a 的字符代码是 97。
比较数字和字符串
另一种棘手的状况发生在比较两个字符串形式的数字时,比如:
1
2
|
var bResult = "25" < "3" ; alert(bResult); //输出 "true" |
上面这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。
不过,如果把某个运算数该为数字,那么结果就有趣了:
1
2
|
var bResult = "25" < 3; alert(bResult); //输出 "false" |
这里,字符串 "25" 将被转换成数字 25,然后与数字 3 进行比较,结果不出所料。
总结:
1
2
|
比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型. 比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较. |
Boolean运算符(重要)
1
2
3
4
5
6
7
|
var temp= new Object(); // false;[];0; null; undefined;object(new Object();) if (temp){ console.log( "yuan" ) } else { console.log( "alex" ) } |
全等号和非全等号
等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。
控制语句
if控制语句
1
2
3
4
5
6
7
8
9
10
11
|
if - else 基本格式 if (表达式){ 语句1; ...... } else { 语句2; ..... } 功能说明 如果表达式的值为 true 则执行语句1, 否则执行语句2 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
var x= ( new Date()).getDay(); //获取今天的星期值,0为星期天 var y; if ( (x==6) || (x==0) ) { y= "周末" ; } else { y= "工作日" ; } alert(y); //等价于 y= "工作日" ; if ( (x==6) || (x==0) ) { y= "周末" ; } |
if 可以单独使用
1
2
3
4
5
6
7
8
9
10
|
if 语句嵌套格式 if (表达式1) { 语句1; } else if (表达式2){ 语句2; VSCode自定义代码片段12——JavaScript的Promise对象
|