JS–ECMAScript5
JavaScript笔记–ECMAScript
输入输出语句
alert(msg) 浏览器弹出警示框
console.log(msg) 浏览器控制台打印输出信息
prompt(info) 浏览器弹出输入框,用户可以输入(取过来的值是 string)
变量
1、声明变量
var age; // 声明一个名称为age的变量
**var ** 是一个JS关键字,用来声明变量(variable 变量的意思)。使用该关键字声明变量后,计算机会自动为变量分配内存空间,不需要程序员管
age 是程序员定义的变量名,我们要通过变量名来访问内存中的分配的空间
2、赋值( = )
age =10 ; //给age 这个变量赋值为10
= 用来把右边的值赋值给左边的变量空间中 此处代表赋值的意思
变量值是程序员保存到变量空间里面的值
3、变量的初始化
var age =18; //声明变量同时赋值为18
声明一个变量并赋值,我们称之为变量的初始化。
小结
- 为什么需要变量?
因为我们一些数据需要保存,所有需要变量
- 变量是什么?
变量就是一个容器,用来存放数据的。方便我们以后使用里面的数据
- 变量的本质是什么?
变量是内存里的一块空间,用来存储数据
声明变量本质是去内存申请空间
- 变量怎么使用?
我们使用变量的时候,一定要声明变量,然后赋值
- 什么是变量的初始化?
声明变量并赋值我们称之为变量的初始化
- 变量命名规范有哪些?
变量名尽量要规范,见名知意----驼峰命名法
要知道哪些变量名不合法
- 交换2个变量值的思路?(三种常见方法)
//声明变量并赋值
var a = 2;
var b = 5;定义一个中间变量tmp
var tmp = a;
a = b;
b = tmp;
//控制台打印出a = 5, b = 2
console.log(“a=” + a + “,b=” + b);加减操作赋值
a = a + b;
b = a - b;
a = a- b;
console.log(“a=” + a + “,b=” + b);运用数组赋值
//将数组[5,2]中索引号为0的元素赋值给a
a = [b, b = a] [0];
console.log(“a=” + a + “,b=” + b);
数据类型
简单数据类型(number,string,boolean,undefined,null)
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包含 整形值和浮点型值, 如21、0.21 | 0 |
Boolean | 布尔值类型, 如 true、false 等价于1和0 | false |
String | 字符串类型,如"张三" 注意js里面,字符串都带有引号 | “” |
Undefined | var a ; 声明了变量a但是没有给值,此时a=undefined | undefined |
Null | var a = null; 声明了变量a为空值 | null |
##数字型的最大值和最小值
alert(Number.MAX_VALUE); // 1.7976931348623157e+308 最大值
alert(Number.MIN_VALUE); // 5e-324 最小值
特殊值
alert(Infinity); //Infinity
alert(-Infinity); //-Indinity
alert(NaN); //NaN
- Infinity, 代表无穷大,大于任何数值
- -Infinity, 代表无穷小,小于任何数值
- NaN,Not a number ,代表一个非数值
isNaN() 函数用于检查其参数是否是非数字值。
isNaN() 这个方法用来判断非数字,并且返回一个值 如果是数字返回的是 false ,如果不是数字返回的是 true
var usrAge = 21;
var isOk = isNaN(usAge);
console.log( isOk); // false 21 是一个数字
var usrName = "andy";
console.log(isNaN(usrName)); // true , "andy" 是一个非数字
复杂数据类型(object)
string 字符串
字符串转义符
类似HTML里面的特殊字符,字符串中也有特殊字符,我们称之为转义符。
转义符都是\
开头的,常用的转义符及其说明如下:
.length
检测获取字符串长度
转义符 | 解释说明 |
---|---|
\n | 换行符,n是 newline 的意思 |
\\ | 斜杠\ |
’ |
' 单引号
|
" |
" 双引号
|
\t | tab 缩进 |
\b | 空格,b是blank 的意思 |
<script>//1.检测 字符串长度 lengthvar str = 'my name is zsls' ;console.log(str.length); // 15//2.字符串的拼接 + 只要有字符串和 其他数据类型 相拼接 最终的结果是字符串类型(string)console.log('沙漠' + '骆驼'); // 字符串 沙漠骆驼console.log('pink'+ 123); // pink123console.log('pink'+true); //pinktrueconsole.log(12+12); // 24console.log('12'+12);//1212 string类型
<\script>
布尔型 Boolean
布尔类型只有两个值: ture 和 false ,其中 true 表示真(对),而false 表示假( 错)
布尔型和数字型相加的时候,ture 的值为1,false 的值为0.
console.log(true+1); //2
console.log(false+1); //1
console.log(true+false); //1
undefined 和 null
一个声明后没有被赋值的变量会有一个默认值
undefined
undefined 和数字相加 最后的结果是 NaN
null 空值
获取变量数据类型
typeof
可用来获取检测变量的数据类型
字面量
字面量是在源代码中一个固定的表示法,通俗来说,就是字面量表示如何表达这个值
简单的说
字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量。
字面量分为字符串字面量(string literal )、数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(function literal)。
示例:
var test="hello world!";
"hello world!" 就是字符串字面量,test 是变量名。
数据类型转换
使用表单、prompt
(prompt() 方法用于显示可提示用户进行输入的对话框)
获取过来的数据默认是字符串类型 此时就不能直接简单的进行加法运算,而需要转换变量的数据类型。通俗的说,就是把一种数据类型的变量转换成另一种数据类型。
转为字符串
方式 | 说明 | 案例 |
---|---|---|
toString() | 转成字符串 | var num = 1; alert(num.toSrting()); |
String() 强制转换 | 转换成字符串 | var num = 1; alert(String(num)); |
加号拼接字符串 | 和字符串拼接的结果都是字符串 | var num = 1; alert(num+“我是字符串”); |
转为数字型 number
方式 | 说明 | 案例 |
---|---|---|
parseInt(string)函数 | 将string类转成 整形数 数值型 | parseInt(‘78’) |
parseFloat(string)函数 | 将string类型转成 浮点数 数值型 | parseFloat(‘78.21’) |
Number()强制转换函数 | 将string类型转换成 数值型 | Number(‘12’) |
js隐式转换(- * / )
|
利用 算数运算符 进行 隐式转换 成数值型 | ‘12’ - 0 |
转为布尔型 Boolean
console.log(Boolean());
方式 | 说明 | 案例 |
---|---|---|
Bootlean()函数 | 其他类型转成布尔值 | Boolean(‘ture’); |
- 代表空、否定的值会被转换为false ,如 “ 、 0 、Nan 、 null 、undefined
- 其余值都会被转换为 true
运算符
由数字、运算符、变量等组成的式子 我们称为表达式 1+1
console.log(1+1); // 2 就是返回值
// 1+1=2
// 在我们程序里面 2=1+1 把我们的右边表达式计算完毕把返回值给左边
var num = 1+1;
递增递减(一元运算符)
如果需要反复给数字变量添加或减去1 ,可以使用递增(++)和递减(–)运算符来完成。
在javascript中,递增(++)和递减(–)既可以放在变量前面,也可以放在变量后面。
放在变量前面时,我们可以称为前置递增(递减)运算符,放在变量后面时,我们可以称为后置递增(递减)运算符
注意:递增和递减 运算符必须和变量配合使用。
- 前置递增和后置递增运算符可以简化代码的编写,让变量的值+1 比以前写法更加简单
- 单独使用时,运算结果相同
- 与其他代码联用时,执行结果会不同
- 后置: 先原值运算,后自加(先人后己)
- 前置:先自加,后运算(先己后人)
- 开发时,大多使用后置递增/减 ,并且代码独占一行,列如:num++ ;或者num–;
比较运算符
概念:比较运算符(关系运算符)是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(ture/false)作为比较运算的结果
运算符名称 | 说明 | 案例 | 结果 |
---|---|---|---|
< | 小于号 | 1<2 | true |
> | 大于号 | 1>2 | false |
>= | 大于等于号(大于或者等于) | 2>=2 | ture |
<= | 小于等于号(小于或者等于) | 3<=2 | false |
== | 判等于(值相同) | 37==37 | ture |
!= | 不等号 | 37!=37 | false |
=== | 全等 要求值和 数据类型都一致 | 37=== ‘37’ | false |
逻辑预算符
概念: 逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。开发中经常用于多个条件的判断。
逻辑运算符 | 说明 | 案例 |
---|---|---|
&& | “逻辑与”,简称:“与” and | true&& false |
\\ | “逻辑或”,简称:“或” or | ture\\false |
! | 非 field2 | field3 |
逻辑 非 (!)也叫作取反符,用来取一个布尔值相反的值,如true的相反值是false
var isok =!true;
console.log(isok); //false
短路运算(逻辑中断)
短路运算的原理: 当有多个表达 式 (值)时,左边的表达式可以确定结果时,就不在继续右边的表达式的值。
1.语法: 表达式1 &&
表达式2
如果第一个表达式的值为真,则返回表达式2
如果第一个表达式的值为假,则返回表达式1
2.语法: 表达式1 ||
表达式2
如果第一个表达式的值为真,则返回表达式1
如果第一个表达式的值为假,则返回表达式2
赋值运算符
概念:用来把数据赋值给变量的运算符
赋值运算符 | 说明 | 案例 |
---|---|---|
= | 直接赋值 |
var usrName = '我是值'
|
+=、-= | 加,减 一个数 后在赋值 |
var age=10;age+=5; //15
|
*=、/=、%= | 乘,除,取模 后在赋值 |
var age= 2; age*=5; //10
|
运算符优先级
优先级 | 运算符 | 顺序 |
---|---|---|
1 | 小括号 |
()
|
2 | 一元运算符 |
++ -- !
|
3 | 算数运算符 |
先 * / % 后 + -
|
4 | 关系运算符 |
> >= < <=
|
5 | 相等运算符 |
== !== ===
|
6 | 逻辑运算符 |
先 && 后 ||
|
7 | 赋值运算符 |
=
|
8 | 逗号运输符 |
,
|
流程控制
if else 语句(双分支语句)
执行流程
三元表达式
语法结构:
条件表达式 ? 表达式1 :表达式2
执行思路:
如果条件表达式结果为真 则 返回 表达式1 的值 如果条件表达式结果为假 则返回 表达式2 的值
switch 语法
注意!!!!!:
switch语句 与 if else 语句 区别
1、一般情况下,他们两个语句可以相互替换。
2、switch…case语句通常处理case为比较确定值的情况
,而且if…els…语句更加灵活,常用于范围判断
(大于,小于,等于某个范围)
3、switch语句进行判断后直接执行到程序的条件语句,效率更高。而且if…else语句有几种条件,就得判断多少次。
4、当分支比较少时,if...else
语句的执行效率比switch语句高。
5、当分支比较多时,switch
语句的执行效率比较高,而且结构更清晰。
for 循环
- for循环可以重复执行某些相同代码
- for循环可以重复执行些许不同的代码,因为我们有计数器
- for循环可以重复执行某些操作,比如算术运算符加法操作
- 随着需求增加,双重for循环可以做更多,更好看的效果
- 双重for 循环,外层循环一次,内层for循环全部执行
- for 循环是循环条件和数字直接相关的循环
- 分析要比写代码跟重要
- 一些核心算法想不到,但是要学会,分析它执行过程
- 举一反三,自己经常总结,坐一些相似的案例
while 循环
while语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环
语法结构如下:
while(条件语句){//循环体代码
}
执行思路:
- 先执行条件表达式,如果结果为ture ,则执行循环体代码;如果为false ,则退出循环,执行后面代码
- 执行循环体代码
- 循环体代码执行完毕后,程序会继续判断执行条件表达式,如果条件仍为true,则会继续执行循环体,直到循环条件为false 时 ,整个循环过程才会结束
do…while 循环
do…while 语句其实是while语句的一个变体。该循环会执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环。
do…while 语法结构如下;
do{//循环体代码-条件表达式为 ture 时重复执行循环体代码
}while(条件表达式)
执行思路:
- 先执行一次循环体代码
- 在执行条件表达式,如果结果为true ,则继续执行循环体代码,如果为false ,则退出循环,继续执行后面代码
注意:先再执行循环体,再判断,我们会发现 do…while循环语句 至少会执行一次循环体代码
小结
- JS中循环有for 、while、do…while
- 三个循环很多情况下都可以相互替代使用
- 如果是用来计次数,跟数字相关的,三者使用基本相同,但是我们更喜欢用for
- while 和 do…while 可以做更复杂的判断条件,比for 循环灵活一些
- while 和 do…while 执行顺序不一样,while 先判断后执行 ,do…while 先执行一次,再判断执行
- while 和 do…while 执行次数不一样,do…while 至少会执行一次循环体,而while 可能一次也不执行
- 实际工作中,我们更常用for 循环语句,它写法更简洁直观,所以这个要重点学习
continue 与 break
continue
:结束当前循环,继续运行剩下的循环
brerak
:结束前面所有循环并退出
数组
数组长度
数组名.length 可以修改数组元素
先修改数组长度,再修改索引号,再修改数组元素
冒泡循环 ★★★★★
函数
(1)function 声明函数的关键字 全部小写
(2)函数是做某件事情,函数名一般是动词 sayHi
(3)函数不调用自己不执行
调用函数
函数名();
调用函数的时候不要忘记小括号 ()
注意 声明函数不调用不执行,只有调用函数才会执行函数代码
利用函数的参数 实现函数重复不同的代码
function 函数名(形参1,形参2.....){ //在声明函数的括号里面是 形参 (形式上的参数)
}
函数名 (实参1,实参2...){ //在函数调用的括号里是实参 (实际的参数)
}
实参和形参
函数的参数可以有,也可以没有 个数不限
在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用函数时,同样也需要传递相应的参数,这些参数被称为实参。
参数 | 说明 |
---|---|
形参 | 形式上的参数,函数定义的时候 传递的参数 当前并不知道是什么 |
实参 | 实际上的参数 函数调用的时候传递的参数 实参实传递给形参的 |
函数的返回值 return
return 需要返回的结果
语法格式
function 函数名(){return 需要返回的结果 ;
}
函数名 ();
把最终的结果需要返回给函数的调用者 函数名()
return 后面的代码无法执行
函数都是有返回值的
- 如果有return 则返回 return 后面的值
- 如果没有returm 则返回 undefined
小结
- break:结束当前的循环体(如 for 、while)
- continue: 跳出本次循环,继续执行下次循环(如 for 、 while)
- retum: 不仅可以退出循环,还还能够返回return语句中的值,同时还可以结束当前的函数体内的代码
arguments 的使用 (内置对象)
当我们不确定有多少该个参数的时候,可以用
argumemts
来获取,在js中,atguments
实际上他是当前函数的一个内置函数。所有函数都内置了一个arguments对象
,arguments对象中储存了传递的所有实参。
arguments 展示形式是一个伪数组,因此可以进行遍历,伪数组具有以下特点:
- 具有length属性
- 按索引方式储存数据
不具有数组的push 、pop等方法
只有函数才有 arguments对象
函数是可以相互调用
函数的声明
作用域
就是代码名字(变量)在某个范围内起作用和效果 目的是为了调高程序的可靠性 更重要的是减少命名冲突
变量的作用域
1、全局:全局作用域下的变量 在全局下都可以使用
注意:如果在函数内部 没有声明(
var
)直接赋值的变量也属于全局变量 赋值变量也叫全局变量
2、局部: 在局部作用域下的变量 后者在函数里的变量就是 局部变量
注意: 函数的形参也可以看作是局部变量
区别
作用域链–就近原则
输出:20
预解析
js引擎会把js 里面所有的
var变量
还有function函数
提升到当前作用域的最前面
变量提升就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
函数提升 就是把 所有的函数声明提升到当前作用域的最前面 不调用函数
对象 - 万物皆对象
对象是由属性和方法组成的。
- 属性:事物的特征,在对象中用属性来表示(常用名词)
- 方法:事物的行为,在对象中用方法来表示(常用动词)
创建对象
使用对象
变量,属性,函数,方法的 区别
- 变量:单独声明赋值,单独存在
- 属性:对象里面的变量称为属性,不需要声明,用来描述该对象的特征
- 函数: 单独存在的,通过"函数名()"的方式可以调用
- 方法:对象里面的函数值称为方法,方法不需要声明,使用"对象.方法名()"的方式就可以调用,方法用来描述该对象的行为和功能。
用 new object 创建对象
构造函数
构造函数是一种特殊的函数,主要用来
初始化对象
。即为对象成员变量赋初始值,它总于new运算符一起使用
,我们可以把对象中的一些公共的属性和方法抽取出来,然后封装到这个函数里面
语法格式
function 构造函数名(){this.属性= 值;this.方法 = function(){}
}
new 构造函数名();
案例
构造函数与对象
- 构造函数,如Stars(),抽象了对象的公共部分,封装到了函数里面,它泛指某一大类(class)
- 创建对象:如 new Stars() ,特指某一个,通过new 关键创建对象的过程我们也称为对象实例化
new 关键字
1、new 构造函数可以在内存中创建一个空对象
2、this 就会指向刚才创建的空对象
3、执行构造函数里面的代码 给这个空对象添加属性和方法
4、返回这个对象(所以构造函数里不需要return)
遍历对象属性 - for…in…
for…in 语句 用于对数组或者对象的属性进行循环操作
for ( 变量 in 对象){}
小结
- 对象可以让代码结构跟清晰
- 对象复杂数据类型object
- 本质:对象就是一组无序的相关属性的方法的集合
- 构造函数 泛指某一大类。比如苹果,不管是红色苹果还是绿色苹果,都统称为苹果
- 对象实例特指一个事物,比如这个苹果,正在给你们写着笔记的作者等
- for…in 语句用于对对象的属性进行循环操作。
内置对象 - DOM
js有3种对象:
自定义对象-ECMAScript
内置对象-DOM
浏览器对象-BOM
MDN
https://developer.mozilla.org/zh-CN/
Math 数学对象
Math 数学对象官方说明
与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。引用圆周率的写法是 Math.PI,调用正余弦函数的写法是 Math.sin(x),x 是要传入的参数。Math 的常量是使用 JavaScript 中的全精度浮点数来定义的。
Math.PI //圆周率
Math.floor() //向下取整
Math.cell() //向上取整
Math.round() //四舍五入 就近取整 注意 -3.5 结果是-3
Math.abs() //绝对值
Math.max() //求最大和最小值
Math.round() 四舍五入 其他数字都是四舍五入 但是 0.5 特殊 他往大取值
随机数 random()
返回一个随机数 0=<x<1
得到两个数之间的随机整合 并且 包含这两个整数↓↓↓↓
Math.floor(math.random()*(max-min+1))+min;
日期对象 Data()
var date =new Date(); 必写
只能通过 Data构造函数来实例化日期对象
使用data 如果没有参数 返回当前系统的当前时间
1.获取当前时间必须实例化
var now = new Data();
console.log(now);
2.Data() 构造函数的参数
如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为 ‘2020-6-19’ ,可以写成new Date(‘2020-6-19’)
获取日期指定的部分
有时候我们需要获取日期指定的部分,所以我们要手动的得到这种格式。
方法名 | 说明 | 代码 |
---|---|---|
getFullYear() | 获取当年 | dObj.getFullYear() |
getMonth() | 获取当月(0-11) | dObj.getMonth() |
getDate() | 获取当天日期 | dObj.getDate() |
getDay() | 获取星期几(每周0 到周6) | dobj.getDay() |
getHours() | 获取当前小时 | dobj.getHours() |
getMinutes() | 获取当前分钟 | dobj.getMinutes() |
getSeconds() | 获取当前秒数 | dobj.getSeconds() |
案例
年月日
// 最后一行
console.log('今天是'+year+'年'+month+'月'+dates+'日'+arr[day])
时分秒
获取毫秒
倒计时案例
代码部分
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width= , initial-scale=1.0"><title>Document</title>
</head>
<script>// d = parseInt(总秒数/60/60/24); 计算天数// h=parseInt(总秒数/60/60%24); 计算小时// m=parseInt(总秒数/60%60); 计算分数// s=parseInt(总秒数%60); 计算当前秒数function conutDown(time) {var nowTime = +new Date(); //返回当前时间的总的毫秒数var inputTime = +new Date(time); //返回用户输入时间的总毫秒数var times = (inputTime - nowTime) / 1000; //剩余时间总的秒数//天var d = parseInt(times / 60 / 60 / 24);d = d < 10 ? '0' + d : d;//时var h = parseInt(times / 60 / 60 % 24);h = h < 10 ? '0' + h : h;//分var m = parseInt(times / 60 % 60);m = m < 10 ? '0' + m : m;//秒var s = parseInt(times % 60);s = s < 10 ? '0' + s : s;// 判断时间是否小于10 否则加+0// d = d < 10 ? '0' + d : d;// h = h < 10 ? '0' + h : h;// m = m < 10 ? '0' + m : m;// s = s < 10 ? '0' + s : s;return d + '天' + h + '时' + m + '分' + s + '秒';}console.log(conutDown('2021-1-1 00:00:00'));var data = new Date(); //现在时间console.log(data);
</script><body></body></html>
判断数组对象
1、instanceof
运算符 可以用来检测是否为数组
语法 :数组名 instanceof Array
2、Array.isArray(参数)
添加删除数组元素方法
添加方法 - push unshift
push 是可以给数组
追加新的元素
(加在数组最后)
push() 参数直接写 数组元素就可以了
push 完毕后,返回的结果是 新数组的长度
原数组也会发生变化unshift 在
数组开头添加
添加一个或者多个数组元素
删除方法- pop shift
- pop() 可以删除数组的最后一位元素 一次只能删除一个
pop()没有参数
pop() 完毕之后,返回的值是删除的元素
原数组也会发生变化 - shift()删除数组的第一个元素 返回删除的值 原数组也会发生变化
小结
方法名 | 说明 | 返回值 |
---|---|---|
push(参数1…) | 末尾添加一个或多个元素,注意修改原数组长度 | 并返回新的长度 |
pop() | 删除数组最后一个元素,把数组长度减1,无参数,修改原数组 | 返回它删除的元素的值 |
unshift(参数1…) | 向数组的开头添加一个或更多元素,注意修改原数组 | 并返回新的长度 |
shift() | 删除数组的一个元素,数组长度减1 无参数 ,修改原数组 | 并返回第一个元素的值 |
数组排序
1、翻转数组
数组名.reverse( )
2、排序 (冒泡排序)
数组名.sort( );
函数的返回值只是判断正负,用来控制两个元素是否互换位置
数组索引 查找
- indexOf(数组元素) 返回该数组元素的索引号 只返回一个满足条件的索引号 如果没有找到该元素返回 -1 从数值前面开始查找
- lastIndexOf(数组元素) 从数值后面开始查找
方法名 | 说明 | 返回值 |
---|---|---|
indexOf() | 数组中查找给定元素的第一个索引 | 如果存在返回索引号 如果不存在,则返回-1 |
lastIndexOf() | 在数组中的最后一个的索引 | 如果存在返回索引号 如果不存在,则返回-1 |
数组转为字符串
- 数组名.toString() 把数组转换成字符串
- 数组名.join(分隔符) 可以在数组元素之间添加符号
方法名 | 说明 | 返回值 |
---|---|---|
.toString() | 把数组转换成字符串,逗号分隔每一项 | 返回一个字符串 |
.join(‘分隔符’) | 方法用于把数组中的所有元素转换为一个字符串 | 返回一个字符串 |
重要
方法名 | 说明 | 返回值 |
---|---|---|
concat() | 连接两个或多个数组 不影响原数组 | 返回一个新的数组 |
slice() | 数组截取 slice(begin,end) | 返回被截取项目的新数组 |
splice() | 数组删除 splice(第几个开始,要删除个数) | 返回被删除项目的新数组 注意,这个会影响原数组 |
slice() 和 splice() 目的基本相同 ,建议重点看下 splice()
字符串对象
1、基本包装类型
2、字符串的不可变性
根据字符返回位置
字符串所有的方法,都不会改变字符串本身(字符串是不可变的),操作完成返回一个新的字符串
根据位置返回字符
方法名 | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符 (index 字符串的索引号) | str.charAt(0) |
charCodeAt(index) | 获取指定位置处字符的ASCII码 (index 索引号) | str.charCodeAt(0) |
str[index] | 获取指定位置处字符 | HTML5, IE8+ 支持 和 charAt()等效 |
字符串操作方法(重点)
1、concat(‘字符串1’,‘字符串2’,‘字符串3’,…) - 字符串拼接
concat() 方法用于连接两个或多个数组。
var srt='abdy';
console.log(str.soncat('red'))
//输出为 abdyred
2、substr(‘截取的起始位置’,‘截取几个字符’);
var str1='改革春风吹满地';
console.log(str1.substr(2,2)); //第一个2是索引号的2 从第几个开始 第二个2 是取几个字符
输出为 春风
3、替换字符串 replace(‘被替换的字符’,‘替换为的字符’) 只会替换第一个字符
var str ='andyandy';
console.log(str.replace('a' , 'b'));
//结果为 bndyandy
结果就是:abc*efoxyozzopp
4、字符串转换为数组 split(‘分隔符’) 前面join 把数组转换成字符串
简单数据类型与复杂数据类型
简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
- 值类型: 简单数据类型/基本数据类型,在储存时变量中储存的是值本身,因此叫做值类型
string、number、boolean、undefined、null
引用类型:复杂数据类型,在存储是变量中储存的仅仅是地址(引用),因此叫做引用数据类型
- 通过
new 关键字
创建的对象(系统对象,自定义对象),如Object、Array 、Date等
简单数据类型 | 说明 | 默认值 |
---|---|---|
Number | 数字型,包括 整形值和浮点型值,如21/0.21 | 0 |
Boolean | 布尔值类型,如true,false,等价于1和0 | false |
String | 字符串类型,如 “张三” js里,字符串都带引号 | " " |
Undefined | var a; 声明了变量a 但是没有给值,此时a=undefined | undefined |
Null | var a=null;声明了变量a为空值 | null |
复杂数据类型 | 说明 | 默认值 |
---|---|---|
Object | 对象 |
let a = {}
|
Array | 数组 |
let b = []
|
Date | 日期 |
let D = new Date()
|
接下来就是DOM部分
JS–ECMAScript5相关推荐
- U盘“请将磁盘插入U盘”的问题/U盘0字节修复方法
一.U盘插入电脑后,点击U盘会提示"请将磁盘插入U盘xx",电脑识别不了U盘 二.可能原因 当U盘没在电脑上先弹出U盘,而是直接拔U盘时,就可能会导致U盘里面的数据损坏而导致识别不 ...
- Visual Studio 11增强HTML5和JS的支持
Visual Studio 11增强HTML5和JS的支持 Mads Kristensen 在 TechDays 2012 海牙站上发表了一场很有趣的演讲,演讲内容是关于在 Visual Studio ...
- JS学习笔记 - 代码复用
本文章记录本人在学习 JavaScript 中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习. js 中复用代码 说道代码复用,一般都会涉及到对象继承.在js中有许多可以选择的继承方 ...
- JS数组去重的6种算法实现
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...
- js的数据类型,以及如何判断它们是哪种类型
一.js的数据类型:null . nudefined .number.Boolean.string.array.object 二.判断js的数据类型 (1)值类型 console.log(typeof ...
- Node.js中的常用工具类util
util是一个Node.js核心模块,提供常用函数的集合,用于弥补JavaScript的功能的不足,util模块设计的主要目的是为了满足Node内部API的需求.其中包括:格式化字符串.对象的序列化. ...
- JS高级程序设置笔记(二)
5.4 RegExp类型 用这个类来表示正则表达式. var expression = /pattern/flags; pattern部分是任何简单的或者复杂的正则:每一个正则都有一个或者多个标志. ...
- JavaScript深入【表达式和运算符(上集)】你能过我8关js运算符的题目吗?
博主留言 (茗洋芳竹) 每一个高手成功之路,都要学会怎样与孤独打交道 .我是个傻孩子,孤独竟然是我的夫人,每天晚上都会坐在我旁边看我学习,写博客.马上要离开ASP.NET生涯,投奔PHP了,一切都是那 ...
- JS高级进阶之ECMAScript 常见面试题
1.es5和es6的区别,说一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化 ECMAScript6,即ES6,是ECMAScript ...
最新文章
- libevent源码深度剖析
- 解决:【异常】Caused by: java.lang.IllegalStateException: Zip64 archives are not supported
- Flink从入门到精通100篇(八)-美团点评是如何在 Flink平台建立 实时数仓的?
- oracle中sql命令分为几类,常用的SQL命令和ORACLE命令对比
- php网站适合优化_php开发大型网站如何优化的方案详解
- GlusterFS安装配置
- [react] 怎么使用Context开发组件?
- comment.html手机文件,comment.html
- 某大型银行深化系统技术方案之十四:服务层之服务调度机制
- MySQL8 OCP 证书
- 白话CMMI(一)——CMMI扫盲
- oracle dba_users,为什么dba_users里有的用户却总是select不出来
- 纳人才,谋发展 | 人大金仓喜获“最佳雇主校招案例奖”
- SCI论文写作是用主动语态好还是被动语态好?
- 你这简历一看就是包装过的
- PDL格式解决方案Aspose.Page重磅上新!两大文档格式功能助力文档管理!
- poi3.17导出excel添加附件解决办法
- 一牛网:PCB layout设计培训:免费试听,可预约报名
- Esper epl语句详解
- jQuery-表单流程导航
热门文章
- Gearman 心得
- c 语言生成一个随机4位数,PLC如何产生一个随机数(含代码)
- Linux: Intel Eethernet driver:ixgbe i40e;error “Adapter removed“
- 石墨烯能带matlab,锯齿石墨烯能带matlab计算程序
- NLP文本提取中打标签列表和方案
- 怡丰机器人上市_成立三年之内 机器人领域的这些黑马公司不可不知
- 【Nutz】Nutz起步
- 第四类互联网交互模式──威客模式
- 一起Talk Android吧(第一百八十六回:Android中的AsyncTask机制五)
- 当ie浏览器无法上网时