JavaScript基础入门01
js代码位置
首先是如何编写JavaScript
代码,说到这,我们首先要来说明一个需要新人们关注的点,因为我们的js
是一门跨平台
的语言,所以说,我们的代码可以运行在不同的平台
之上。这也就导致了可能相同的代码放在不同的平台运行就会有所出入。
这里面说的平台其实被称之为
宿主环境
。
同时,代码在不同的平台上的运行方式也有所不同。
如果运行在服务端
,那么更多的时候我们需要通过命令行的形式去运行,而如果是代码运行在客户端
,则需要通过启动浏览器
来运行代码。
我们在学习的初期建议是在浏览器
中运行代码,减少学习成本。
首先,我们的js
代码可以写在script
标签内部并且将script
标签放在网页的任何位置。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
<script>
// js code ...
</script>
</head>
<body>
<script>
// js code ...
</script>
</body>
<script>
// js code ...
</script>
</html>
在上面的代码中,我们把包含有js
代码的script
标签放在了head
标签、body
标签、和body
标签之后的位置。从语法的层面来说,上面的这几种写法都是正确的。但是较为推荐的写法是将scirpt
标签放在body
标签的闭合标签的后面。
推荐的原因,是因为js
代码经常需要操作html
标签,而放在后面可以等到html
标签加载完毕之后再来执行js
代码。避免因为html
标签未加载而导致的报错。
js语句
js
当中的语句表示js
向宿主环境发送的命令。
例如下面的语句是向页面中输出计算10 + 2
的结果。
document.write(10+2);
在每一条语句的后面都带有一个分号,表示语句结束。
当然js
允许我们将分号省略掉,但是无论是从代码的维护成本还是其他因素考虑,都不建议将每条语句后面的分号省略掉。
需要注意的是,如果分号前面的语句为空,则没有意义。
注释
注释
是任何编程语言当中必不可少的一环。通过注释,可以让我们开发过的代码具有更好的可读性,也能变相的提升后期代码的维护和升级速度。
一般情况下,注释的内容可以包含很多,例如参数信息
,代码功能
、使用方式
等等。
在js
中,注释
分为两种,一种是单行注释
,一种是多行注释
。
单行注释
通过//
表示,一般写在语句的后面或者语句的上方。
// 这里是代码注释
多行注释
通过/**/
的形式来创建,一般写在代码的上方。
/*
这里是多行注释...
*/
直接量
在js
中,直接使用的量,我们称之为叫做直接量
。
例如,在代码中,我们要使用10
,那么这个10
就是一个直接量
。
表达式
一般情况下,表达式
需要得到一个结果。
例如10+2
就是一个表达式,我们在创建这个表达式的时候,就希望得到10+2
的结果。
document.write(10+2);// 通过document.write()方法将10+2这个表达式的结果输出到网页当中
输出方式
我们在编写js
代码的时候,经常需要得到计算的值,用以判断得到的值与我们预期的值是否相符,所以我们需要了解下面的基本的输出方式。
// console.log() 将内容输出到浏览器的控制台
console.log(10+2);
// document.write() 将内容输出到网页当中
document.write(10+2);
通常情况下我们通过console.log()
这种形式输出代码我们称之为代码打印
。
弹窗
在js
中,如果你的代码运行环境是在浏览器
当中,那么就可以使用浏览器
给我们提供的弹窗。
alert(10+2);
confirm(10+2);
prompt(10+2);
上述的三个弹窗只能够在运行环境为浏览器的情况下使用。
变量
我们上面说到了表达式
,通过表达式
能够得到计算的结果,但是如果我们计算的逻辑较为复杂,那么如果单纯的依赖表达式将会变得不那么方便。
这个时候,就可以使用变量
。
什么是变量
呢?
我们可以把变量
理解为是一个代名词
或者说叫做临时的容器
。
我们可以把一个具体的值存入到变量中。那么此时这个变量就代表着我们这个具体的值。我们如果想要重新的使用这个值,不再需要重新的计算或者其他操作,直接使用变量就可以得到之前存储的这个值。
而想要创建一个变量(也可以说是声明
一个变量),需要通过var
关键字(es6
中通过let
声明)。
var val = 10 + 2;
在上面的代码中,我们创建了一个变量val
,并且使用这个变量val
存储了表达式10+2
的计算结果。那么如果想要第二次使用10+2
的结果,可以直接使用变量val
即可。
在我们使用变量
的时候,还有一点需要理解,变量
之所以叫变量,是因为变量
随时可以根据我们的需要更改其中存储的值。
var a = 10;
a = 20; // 当我们重新的向变量中存储数据的时候,不需要再加var
console.log(a); // 此时再打印a结果就为20
需要注意的是,上面我们将变量a
内存储的数据由10
变成了20
,在重新存储的过程中,我们并没有使用var
,那么上面的代码就相当于我们将20
的值存储到之前创建的变量a
中。
而如果在重新的存储的过程中使用了var
,如同下面的案例:
var a = 10; // 第一次声明变量a
var a = 20; // 再一次通过var声明变量a,并且使用了var
consoloe.log(a);
需要注意的是,虽然最后的结果和上面的打印结果相同,但是变量a
本质上已经发生了变化。
如果在重新存储数据的过程中,没有在变量名前面加var,那么相当于是更改变量a中存储的值,而如果前面加了var,则相当于重新的创建了一个变量a,并且存储了20这个数据。
变量提升:
JavaScript
引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部
,这就叫做变量提升(hoisting)。
console.log(a);
var a = 1;
上面代码首先使用console.log
方法,在控制台(console)显示变量a
的值。这时变量a
还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。
var a;
console.log(a); //undefined
a = 1;
标识符
标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。JavaScript 语言的标识符对大小写敏感,所以a
和A
是两个不同的标识符。
标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript 引擎遇到非法标识符,就会报错。
简单说,标识符命名规则如下。
- 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号(
$
)和下划线(_
)。 - 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字
0-9
。
数据类型
变量
用来临时存储数据(如果想要永久的存储数据,需要通过数据库)。而在任何一门编程语言当中,数据都是分为不同类型的。就如同人类也分为男人和女人一样。
下面就来说一下在JavaScript
中数据的不同类型。
在js
当中数据类型分为两类,一类是原始类型
,一类是引用数据类型
。原始类型
又称之为基础数据类型
,引用类型
也称之为对象类型
。
原始类型
的数据包含有下面几个:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol(ES6中新增加的内容)
引用类型
的数据包含有下面几个:
- Object
- Array
- Function
Boolean
在计算机科学中,布尔值是一种逻辑数据类型,其值只能为真或假。例如,在JavaScript中,布尔条件 常用于决定执行哪一部分代码(例如在if语句中)或重复(例如在For循环中)。
布尔值
包含有两个值true
和false
。其中true
表示真
,false
表示假
。
例如我们判断一个条件,如果这个条件满足,那么对应着布尔值true
,如果这个条件不满足,那么就对应着布尔值false
。
下列运算符会返回布尔值:
- 前置逻辑运算符:
!
(Not) - 相等运算符:
===
,!==
,==
,!=
- 比较运算符:
>
,>=
,<
,<=
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false
,其他值都视为true
。
undefined
null
false
0
NaN
- ""或''(空字符串)
Null
在计算机科学中,空值表示一个引用,该引用通常有意指向不存在或无效的对象或地址。空引用的含义因语言实现而异。
在JavaScript中,null是一个基本值(原始数据)。
Null
类型里面只有一个值,就是null
。
关于null
,你可以把它理解为无
,它表示一个空值。
var a = null;
例如上面的代码当中,你可以理解为此事的变量a表示的值为空。当我们在一些需要传递值的地方,如果我们没有值进行传递,那么就可以传递一个null
,表示传递的值为空。
undefined
Undefined
类型当中只有一个值就是undefined
。
在代码的编写过程中,一个没有被赋值的变量的类型就是undefined
。
var a;
console.log(a); // 会在浏览器的控制台中输出undefined
Number
Number
类型即为数字类型
。
在MDN
中关于Number
类型的描述如下:
根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(263 -1) 到 263 -1)。它并没有为整数给出一种特定的类型。除了能够表示浮点数外,还有一些带符号的值:
+Infinity
,-Infinity
和NaN
(非数值,Not-a-Number)。
JavaScript 内部,所有数字都是以64位浮点数
形式储存,即使整数也是如此。所以,1
与1.0
是相同的,是同一个数。
1 === 1.0 // true
这就是说,JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)。容易造成混淆的是,某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。
由于浮点数
不是精确的值,所以涉及小数的比较和运算要特别小心
0.1 + 0.2 === 0.3
// false 0.3 / 0.1
// 2.9999999999999996 (0.3 - 0.2) === (0.2 - 0.1)
// false
String
将0
个或者任意多
个字符排列起来放在单引号
或者双引号
当中,就是一个字符串(String)
。
var a = "hello,world!";
var b = 'hello,JavaScript!';
上面的变量a
和b
当中存储的数据就是字符串
,其中一个使用了单引号,一个使用了双引号,两者都是合法的。
单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。
运算符
在编程语言当中,运算符是处理数据的基本方法,能够根据现有的值得到新的值。
在JavaScript
当中,存在下列的运算符。
- 赋值运算符
- 比较运算符
- 算数运算符
- 位运算符
- 逻辑运算符
- 字符串运算符
- 条件(三元)运算符
- 逗号运算符
- 一元运算符
- 关系运算符
顺序是从右向左的进行赋值操作。
下面的列表中包含全部的赋值运算符
。
- 赋值
x = y
- 加赋值
x += y
- 减赋值
x -= y
- 乘赋值
x *= y
- 除赋值
x /= y
- 模赋值
x %= y
- 指数赋值
x **= y
- 左移赋值
x <<= y
- 右移赋值
x >>= y
- 无符号右移赋值
x >>>= y
- 按位与赋值
x &= y
- 按位异或赋值
x ^= y
- 按位或赋值
x |= y
比较运算符
比较运算符包括下列内容:
- 等于
==
如果两边操作数相等时返回true。 - 不等于
!=
如果两边操作数不相等时返回true - 全等
===
两边操作数相等且类型相同时返回true。 - 不全等
!==
两边操作数不相等或类型不同时返回true。 - 大于
>
左边的操作数大于右边的操作数返回true - 大于等于
>=
左边的操作数大于或等于右边的操作数返回true - 小于
<
左边的操作数小于右边的操作数返回true - 小于等于
<=
左边的操作数小于或等于右边的操作数返回true
算数运算符
在js
当中,除了提供基础的+
,-
,*
,/
以外,还提供了一些其他的运算符,下面是所有的算术运算符:
+
加法运算-
减法运算*
乘法运算/
除法运算%
求余运算(求模运算)++
自增运算--
自减运算+
一元正值符-
一元负值符**
指数运算符
逻辑运算符
逻辑运算符常用于布尔(逻辑)值之间; 当操作数都是布尔值时,返回值也是布尔值。 不过实际上&&
和||
返回的是一个特定的操作数的值,所以当它用于非布尔值的时候,返回值就可能是非布尔值。
下面是逻辑运算符:
- 逻辑与
(&&)
- 逻辑或
(||)
- 逻辑非
(!)
数据类型转换
JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。
隐式类型转换:
强制类型转换
强制转换主要指使用Number()
、String()
和Boolean()
三个函数,手动将各种类型的值,分别转换成数字、字符串或者布尔值。
Number()
使用Number
函数,可以将任意类型的值转化成数值。
// 数值:转换后还是原来的值
Number(324) // // 字符串:如果可以被解析为数值,则转换为相应的数值
Number('324') // // 字符串:如果不可以被解析为数值,返回 NaN
Number('324abc') // NaN // 空字符串转为0
Number('') // // 布尔值:true 转成 1,false 转成 0
Number(true) //
Number(false) // // undefined:转成 NaN
Number(undefined) // NaN // null:转成0
Number(null) //
对象:
简单的规则是,Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组。
Number({a: 1}) // NaN
Number([1, 2, 3]) // NaN
Number([5]) //
String()
String
函数可以将任意类型的值转化成字符串,转换规则如下。
(1)原始类型值
- 数值:转为相应的字符串。
- 字符串:转换后还是原来的值。
- 布尔值:true转为字符串"true",false转为字符串"false"。
- undefined:转为字符串"undefined"。
- null:转为字符串"null"。
String(123) // "123"
String('abc') // "abc"
String(true) // "true"
String(undefined) // "undefined"
String(null) // "null"
String({a: 1}) // "[object Object]"
String([1, 2, 3]) // "1,2,3"
Boolean()
Boolean()
函数可以将任意类型的值转为布尔值。
它的转换规则相对简单:除了以下五个值的转换结果为false
,其他的值全部为true
。
undefined
null
0
(包含-0
和+0
)NaN
- ""(空字符串)
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
//注意,所有对象(包括空对象)的转换结果都是true,甚至连false对应的布尔对象new Boolean(false)也是true
Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true
------------恢复内容结束------------
js代码位置
首先是如何编写JavaScript
代码,说到这,我们首先要来说明一个需要新人们关注的点,因为我们的js
是一门跨平台
的语言,所以说,我们的代码可以运行在不同的平台
之上。这也就导致了可能相同的代码放在不同的平台运行就会有所出入。
这里面说的平台其实被称之为
宿主环境
。
同时,代码在不同的平台上的运行方式也有所不同。
如果运行在服务端
,那么更多的时候我们需要通过命令行的形式去运行,而如果是代码运行在客户端
,则需要通过启动浏览器
来运行代码。
我们在学习的初期建议是在浏览器
中运行代码,减少学习成本。
首先,我们的js
代码可以写在script
标签内部并且将script
标签放在网页的任何位置。
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
<script>
// js code ...
</script>
</head>
<body>
<script>
// js code ...
</script>
</body>
<script>
// js code ...
</script>
</html>
在上面的代码中,我们把包含有js
代码的script
标签放在了head
标签、body
标签、和body
标签之后的位置。从语法的层面来说,上面的这几种写法都是正确的。但是较为推荐的写法是将scirpt
标签放在body
标签的闭合标签的后面。
推荐的原因,是因为js
代码经常需要操作html
标签,而放在后面可以等到html
标签加载完毕之后再来执行js
代码。避免因为html
标签未加载而导致的报错。
js语句
js
当中的语句表示js
向宿主环境发送的命令。
例如下面的语句是向页面中输出计算10 + 2
的结果。
document.write(10+2);
在每一条语句的后面都带有一个分号,表示语句结束。
当然js
允许我们将分号省略掉,但是无论是从代码的维护成本还是其他因素考虑,都不建议将每条语句后面的分号省略掉。
需要注意的是,如果分号前面的语句为空,则没有意义。
注释
注释
是任何编程语言当中必不可少的一环。通过注释,可以让我们开发过的代码具有更好的可读性,也能变相的提升后期代码的维护和升级速度。
一般情况下,注释的内容可以包含很多,例如参数信息
,代码功能
、使用方式
等等。
在js
中,注释
分为两种,一种是单行注释
,一种是多行注释
。
单行注释
通过//
表示,一般写在语句的后面或者语句的上方。
// 这里是代码注释
多行注释
通过/**/
的形式来创建,一般写在代码的上方。
/*
这里是多行注释...
*/
直接量
在js
中,直接使用的量,我们称之为叫做直接量
。
例如,在代码中,我们要使用10
,那么这个10
就是一个直接量
。
表达式
一般情况下,表达式
需要得到一个结果。
例如10+2
就是一个表达式,我们在创建这个表达式的时候,就希望得到10+2
的结果。
document.write(10+2);// 通过document.write()方法将10+2这个表达式的结果输出到网页当中
输出方式
我们在编写js
代码的时候,经常需要得到计算的值,用以判断得到的值与我们预期的值是否相符,所以我们需要了解下面的基本的输出方式。
// console.log() 将内容输出到浏览器的控制台
console.log(10+2);
// document.write() 将内容输出到网页当中
document.write(10+2);
通常情况下我们通过console.log()
这种形式输出代码我们称之为代码打印
。
弹窗
在js
中,如果你的代码运行环境是在浏览器
当中,那么就可以使用浏览器
给我们提供的弹窗。
alert(10+2);
confirm(10+2);
prompt(10+2);
上述的三个弹窗只能够在运行环境为浏览器的情况下使用。
变量
我们上面说到了表达式
,通过表达式
能够得到计算的结果,但是如果我们计算的逻辑较为复杂,那么如果单纯的依赖表达式将会变得不那么方便。
这个时候,就可以使用变量
。
什么是变量
呢?
我们可以把变量
理解为是一个代名词
或者说叫做临时的容器
。
我们可以把一个具体的值存入到变量中。那么此时这个变量就代表着我们这个具体的值。我们如果想要重新的使用这个值,不再需要重新的计算或者其他操作,直接使用变量就可以得到之前存储的这个值。
而想要创建一个变量(也可以说是声明
一个变量),需要通过var
关键字(es6
中通过let
声明)。
var val = 10 + 2;
在上面的代码中,我们创建了一个变量val
,并且使用这个变量val
存储了表达式10+2
的计算结果。那么如果想要第二次使用10+2
的结果,可以直接使用变量val
即可。
在我们使用变量
的时候,还有一点需要理解,变量
之所以叫变量,是因为变量
随时可以根据我们的需要更改其中存储的值。
var a = 10;
a = 20; // 当我们重新的向变量中存储数据的时候,不需要再加var
console.log(a); // 此时再打印a结果就为20
需要注意的是,上面我们将变量a
内存储的数据由10
变成了20
,在重新存储的过程中,我们并没有使用var
,那么上面的代码就相当于我们将20
的值存储到之前创建的变量a
中。
而如果在重新的存储的过程中使用了var
,如同下面的案例:
var a = 10; // 第一次声明变量a
var a = 20; // 再一次通过var声明变量a,并且使用了var
consoloe.log(a);
需要注意的是,虽然最后的结果和上面的打印结果相同,但是变量a
本质上已经发生了变化。
如果在重新存储数据的过程中,没有在变量名前面加var,那么相当于是更改变量a中存储的值,而如果前面加了var,则相当于重新的创建了一个变量a,并且存储了20这个数据。
变量提升:
JavaScript
引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部
,这就叫做变量提升(hoisting)。
console.log(a);
var a = 1;
上面代码首先使用console.log
方法,在控制台(console)显示变量a
的值。这时变量a
还没有声明和赋值,所以这是一种错误的做法,但是实际上不会报错。因为存在变量提升,真正运行的是下面的代码。
var a;
console.log(a); //undefined
a = 1;
标识符
标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名,以及后面要提到的函数名。JavaScript 语言的标识符对大小写敏感,所以a
和A
是两个不同的标识符。
标识符有一套命名规则,不符合规则的就是非法标识符。JavaScript 引擎遇到非法标识符,就会报错。
简单说,标识符命名规则如下。
- 第一个字符,可以是任意 Unicode 字母(包括英文字母和其他语言的字母),以及美元符号(
$
)和下划线(_
)。 - 第二个字符及后面的字符,除了 Unicode 字母、美元符号和下划线,还可以用数字
0-9
。
数据类型
变量
用来临时存储数据(如果想要永久的存储数据,需要通过数据库)。而在任何一门编程语言当中,数据都是分为不同类型的。就如同人类也分为男人和女人一样。
下面就来说一下在JavaScript
中数据的不同类型。
在js
当中数据类型分为两类,一类是原始类型
,一类是引用数据类型
。原始类型
又称之为基础数据类型
,引用类型
也称之为对象类型
。
原始类型
的数据包含有下面几个:
- Boolean
- Null
- Undefined
- Number
- String
- Symbol(ES6中新增加的内容)
引用类型
的数据包含有下面几个:
- Object
- Array
- Function
Boolean
在计算机科学中,布尔值是一种逻辑数据类型,其值只能为真或假。例如,在JavaScript中,布尔条件 常用于决定执行哪一部分代码(例如在if语句中)或重复(例如在For循环中)。
布尔值
包含有两个值true
和false
。其中true
表示真
,false
表示假
。
例如我们判断一个条件,如果这个条件满足,那么对应着布尔值true
,如果这个条件不满足,那么就对应着布尔值false
。
下列运算符会返回布尔值:
- 前置逻辑运算符:
!
(Not) - 相等运算符:
===
,!==
,==
,!=
- 比较运算符:
>
,>=
,<
,<=
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false
,其他值都视为true
。
undefined
null
false
0
NaN
- ""或''(空字符串)
Null
在计算机科学中,空值表示一个引用,该引用通常有意指向不存在或无效的对象或地址。空引用的含义因语言实现而异。
在JavaScript中,null是一个基本值(原始数据)。
Null
类型里面只有一个值,就是null
。
关于null
,你可以把它理解为无
,它表示一个空值。
var a = null;
例如上面的代码当中,你可以理解为此事的变量a表示的值为空。当我们在一些需要传递值的地方,如果我们没有值进行传递,那么就可以传递一个null
,表示传递的值为空。
undefined
Undefined
类型当中只有一个值就是undefined
。
在代码的编写过程中,一个没有被赋值的变量的类型就是undefined
。
var a;
console.log(a); // 会在浏览器的控制台中输出undefined
Number
Number
类型即为数字类型
。
在MDN
中关于Number
类型的描述如下:
根据 ECMAScript 标准,JavaScript 中只有一种数字类型:基于 IEEE 754 标准的双精度 64 位二进制格式的值(-(263 -1) 到 263 -1)。它并没有为整数给出一种特定的类型。除了能够表示浮点数外,还有一些带符号的值:
+Infinity
,-Infinity
和NaN
(非数值,Not-a-Number)。
JavaScript 内部,所有数字都是以64位浮点数
形式储存,即使整数也是如此。所以,1
与1.0
是相同的,是同一个数。
1 === 1.0 // true
这就是说,JavaScript 语言的底层根本没有整数,所有数字都是小数(64位浮点数)。容易造成混淆的是,某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数,然后再进行运算。
由于浮点数
不是精确的值,所以涉及小数的比较和运算要特别小心
0.1 + 0.2 === 0.3
// false 0.3 / 0.1
// 2.9999999999999996 (0.3 - 0.2) === (0.2 - 0.1)
// false
String
将0
个或者任意多
个字符排列起来放在单引号
或者双引号
当中,就是一个字符串(String)
。
var a = "hello,world!";
var b = 'hello,JavaScript!';
上面的变量a
和b
当中存储的数据就是字符串
,其中一个使用了单引号,一个使用了双引号,两者都是合法的。
单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。
运算符
在编程语言当中,运算符是处理数据的基本方法,能够根据现有的值得到新的值。
在JavaScript
当中,存在下列的运算符。
- 赋值运算符
- 比较运算符
- 算数运算符
- 位运算符
- 逻辑运算符
- 字符串运算符
- 条件(三元)运算符
- 逗号运算符
- 一元运算符
- 关系运算符
顺序是从右向左的进行赋值操作。
下面的列表中包含全部的赋值运算符
。
- 赋值
x = y
- 加赋值
x += y
- 减赋值
x -= y
- 乘赋值
x *= y
- 除赋值
x /= y
- 模赋值
x %= y
- 指数赋值
x **= y
- 左移赋值
x <<= y
- 右移赋值
x >>= y
- 无符号右移赋值
x >>>= y
- 按位与赋值
x &= y
- 按位异或赋值
x ^= y
- 按位或赋值
x |= y
比较运算符
比较运算符包括下列内容:
- 等于
==
如果两边操作数相等时返回true。 - 不等于
!=
如果两边操作数不相等时返回true - 全等
===
两边操作数相等且类型相同时返回true。 - 不全等
!==
两边操作数不相等或类型不同时返回true。 - 大于
>
左边的操作数大于右边的操作数返回true - 大于等于
>=
左边的操作数大于或等于右边的操作数返回true - 小于
<
左边的操作数小于右边的操作数返回true - 小于等于
<=
左边的操作数小于或等于右边的操作数返回true
算数运算符
在js
当中,除了提供基础的+
,-
,*
,/
以外,还提供了一些其他的运算符,下面是所有的算术运算符:
+
加法运算-
减法运算*
乘法运算/
除法运算%
求余运算(求模运算)++
自增运算--
自减运算+
一元正值符-
一元负值符**
指数运算符
逻辑运算符
逻辑运算符常用于布尔(逻辑)值之间; 当操作数都是布尔值时,返回值也是布尔值。 不过实际上&&
和||
返回的是一个特定的操作数的值,所以当它用于非布尔值的时候,返回值就可能是非布尔值。
下面是逻辑运算符:
- 逻辑与
(&&)
- 逻辑或
(||)
- 逻辑非
(!)
数据类型转换
JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。
隐式类型转换:
强制类型转换
强制转换主要指使用Number()
、String()
和Boolean()
三个函数,手动将各种类型的值,分别转换成数字、字符串或者布尔值。
Number()
使用Number
函数,可以将任意类型的值转化成数值。
// 数值:转换后还是原来的值
Number(324) // // 字符串:如果可以被解析为数值,则转换为相应的数值
Number('324') // // 字符串:如果不可以被解析为数值,返回 NaN
Number('324abc') // NaN // 空字符串转为0
Number('') // // 布尔值:true 转成 1,false 转成 0
Number(true) //
Number(false) // // undefined:转成 NaN
Number(undefined) // NaN // null:转成0
Number(null) //
对象:
简单的规则是,Number方法的参数是对象时,将返回NaN,除非是包含单个数值的数组。
Number({a: 1}) // NaN
Number([1, 2, 3]) // NaN
Number([5]) //
String()
String
函数可以将任意类型的值转化成字符串,转换规则如下。
(1)原始类型值
- 数值:转为相应的字符串。
- 字符串:转换后还是原来的值。
- 布尔值:true转为字符串"true",false转为字符串"false"。
- undefined:转为字符串"undefined"。
- null:转为字符串"null"。
String(123) // "123"
String('abc') // "abc"
String(true) // "true"
String(undefined) // "undefined"
String(null) // "null"
String({a: 1}) // "[object Object]"
String([1, 2, 3]) // "1,2,3"
Boolean()
Boolean()
函数可以将任意类型的值转为布尔值。
它的转换规则相对简单:除了以下五个值的转换结果为false
,其他的值全部为true
。
undefined
null
0
(包含-0
和+0
)NaN
- ""(空字符串)
Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false
//注意,所有对象(包括空对象)的转换结果都是true,甚至连false对应的布尔对象new Boolean(false)也是true
Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true
------------恢复内容结束------------
------------恢复内容结束------------
------------恢复内容结束------------
JavaScript基础入门01的更多相关文章
- JavaScript基础入门 - 01
JavaScript入门 - 01 准备工作 在正式的学习JavaScript之前,我们先来学习一些小工具,帮助我们更好的学习和理解后面的内容. js代码位置 首先是如何编写JavaScript代码, ...
- javascript基础入门之js中的数据类型与数据转换01
javascript基础入门之js中的数据结构与数据转换01 js的组成(ECMAScript.BOM.DOM) js中的打印语句: 数据类型 变量 ...
- JavaScript基础入门06
目录 JavaScript 基础入门06 Math 对象 Math对象的静态属性 Math对象的静态方法 指定范围的随机数 返回随机字符 三角函数 Date对象 基础知识 日期对象具体API 构造函数 ...
- CSS3基础入门01
CSS3 基础入门 01 前言 相对于css2来说,css3更新了很多的内容,其中包括选择器.颜色.阴影.背景.文本.边框.新的布局方案.2d.3d.动画等等. 而如果想要学习css3的诸多部分,不妨 ...
- JavaScript 基础入门
JavaScript 基础入门 JavaScript 的组成 JS 由三部分组成,它们分别是:ECMAScript.DOM.BOM. ECMAScript 因为网景开发了JavaScrip ...
- JavaScript基础入门10
目录 JavaScript 基础入门10 正则表达式 为什么使用正则表达式? 正则表达式的应用场景 如何创建一个正则表达式 基础语法 具有特殊意义的转义字符 量词 字符类 贪婪模式 练习 邮箱验证 中 ...
- JavaScript基础入门09
目录 JavaScript 基础入门09 Event 自定义右键菜单 获取鼠标按键 获取鼠标坐标 获取键盘按键 页面中位置的获取 浏览器的默认行为 冒泡 什么是冒泡 小练习 JavaScript 基础 ...
- JavaScript基础入门08
目录 JavaScript 基础入门08 DOM 介绍 绑定事件 给一组元素绑定事件 节点 节点树 节点类型 选取文档内容 通过id选取元素 通过指定的标签名选取元素 用指定的css类来选取元素 通过 ...
- JavaScript基础入门07
目录 JavaScript 基础入门07 BOM window对象 Navigator对象 Screen 对象 Location对象 History 对象 JavaScript 基础入门07 BOM ...
随机推荐
- 【chromium】cef是如何进行版本控制的?
搜了搜cef相关的文章,内容大多是 如何下载源码,如何编译,还有一些源码剖析,但是很少有人说明对cef进行开发时如何保存修改,使用git进行修改后的版本控制. cef是怎么做的? cef源码分为两个部 ...
- 大一C语言课程设计——班级档案管理系统
记录我在大一第二学期期末做的C语言课程毕业设计 1. 班级档案管理系统运用到的主要结构体 typedef struct birthday //出生日期{int year;int month;int d ...
- 系统压测结果对比:tomcat/thinkphp/swoole/php-fpm/apache
[测试所用服务器8核,16G内存]压测接口:很简单,从一张表里根据主键随机查询出一条数据[数据库服务器和WEB服务器分开的].表数据量大概:910000+条. 这个测试结果很有趣:tp5.0和3.2性 ...
- java什么是构造方法
构造方法 一.构造方法的特点 (1)每当创建给定类的实例时就调用的方法 (2)与类同名,但没有返回类型 (3)Java 为对象分配内存,初始化实例变量并调用构造方法 (4)两种构造方法 1.参数化构造 ...
- mybatis日志,打印sql语句,输出sql
mybatis日志,打印sql语句,输出sql<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE ...
- nginx 反向代理Jenkins
进入nginx 配置文件 cd /root/nginx/conf 找到nginx.conf 修改server块内容: server { listen 80; ...
- The Xor-longest Path(trie树)
题目: #10056. 「一本通 2.3 练习 5」The XOR-longest Path 解析: 做完#10051后就不是很难了 继续利用异或的性质有\(dis(u,v) = dis(1,u)\o ...
- 《高性能javascript》随笔
1.css文件在head标签中引入,保证在渲染结构的时候进行样式渲染2.Js文件放在body的底部,确保在渲染dom树的时候不会出现js阻塞3.函数内的变量是访问速度最快的,全局变量的访问速度是最慢的 ...
- 前端获取文件input框的美化操作
前面我们说了一种利用input框和js的当时获取本地文件内容的情况-详细信息参考 2017年11月8日前端用js获取本地文件的内容 以上方式获取的按钮是系统默认的显示,有时候我们需要对按钮的外观进行美 ...
- CSS3 弹性盒布局
一.伸缩布局 CSS3 在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开中可以发挥极大的作用. 二.定义 Flexbox 语法格式: di ...