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

声明一个变量并赋值,我们称之为变量的初始化

小结

  1. 为什么需要变量?

因为我们一些数据需要保存,所有需要变量

  1. 变量是什么?

变量就是一个容器,用来存放数据的。方便我们以后使用里面的数据

  1. 变量的本质是什么?

变量是内存里的一块空间,用来存储数据
声明变量本质是去内存申请空间

  1. 变量怎么使用?

我们使用变量的时候,一定要声明变量,然后赋值

  1. 什么是变量的初始化?

声明变量并赋值我们称之为变量的初始化

  1. 变量命名规范有哪些?

变量名尽量要规范,见名知意----驼峰命名法
要知道哪些变量名不合法

  1. 交换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

布尔类型只有两个值: turefalse ,其中 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(条件语句){//循环体代码
}

执行思路:

  1. 先执行条件表达式,如果结果为ture ,则执行循环体代码;如果为false ,则退出循环,执行后面代码
  2. 执行循环体代码
  3. 循环体代码执行完毕后,程序会继续判断执行条件表达式,如果条件仍为true,则会继续执行循环体,直到循环条件为false 时 ,整个循环过程才会结束

do…while 循环

do…while 语句其实是while语句的一个变体。该循环会执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环。

do…while 语法结构如下;

do{//循环体代码-条件表达式为 ture  时重复执行循环体代码
}while(条件表达式)

执行思路:

  1. 先执行一次循环体代码
  2. 在执行条件表达式,如果结果为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 后面的代码无法执行

函数都是有返回值的

  1. 如果有return 则返回 return 后面的值
  2. 如果没有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 对象){}

小结

  1. 对象可以让代码结构跟清晰
  2. 对象复杂数据类型object
  3. 本质:对象就是一组无序的相关属性的方法的集合
  4. 构造函数 泛指某一大类。比如苹果,不管是红色苹果还是绿色苹果,都统称为苹果
  5. 对象实例特指一个事物,比如这个苹果,正在给你们写着笔记的作者等
  6. 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

  1. push 是可以给数组追加新的元素(加在数组最后)
    push() 参数直接写 数组元素就可以了
    push 完毕后,返回的结果是 新数组的长度
    原数组也会发生变化

  2. unshift 在数组开头添加 添加一个或者多个数组元素

删除方法- pop shift

  1. pop() 可以删除数组的最后一位元素 一次只能删除一个
    pop()没有参数
    pop() 完毕之后,返回的值是删除的元素
    原数组也会发生变化
  2. shift()删除数组的第一个元素 返回删除的值 原数组也会发生变化

小结

方法名 说明 返回值
push(参数1…) 末尾添加一个或多个元素,注意修改原数组长度 并返回新的长度
pop() 删除数组最后一个元素,把数组长度减1,无参数,修改原数组 返回它删除的元素的值
unshift(参数1…) 向数组的开头添加一个或更多元素,注意修改原数组 并返回新的长度
shift() 删除数组的一个元素,数组长度减1 无参数 ,修改原数组 并返回第一个元素的值

数组排序

1、翻转数组 数组名.reverse( )
2、排序 (冒泡排序) 数组名.sort( );


函数的返回值只是判断正负,用来控制两个元素是否互换位置

数组索引 查找

  1. indexOf(数组元素) 返回该数组元素的索引号 只返回一个满足条件的索引号 如果没有找到该元素返回 -1 从数值前面开始查找
  2. lastIndexOf(数组元素) 从数值后面开始查找
方法名 说明 返回值
indexOf() 数组中查找给定元素的第一个索引 如果存在返回索引号 如果不存在,则返回-1
lastIndexOf() 在数组中的最后一个的索引 如果存在返回索引号 如果不存在,则返回-1

数组转为字符串

  1. 数组名.toString() 把数组转换成字符串
  2. 数组名.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相关推荐

  1. U盘“请将磁盘插入U盘”的问题/U盘0字节修复方法

    一.U盘插入电脑后,点击U盘会提示"请将磁盘插入U盘xx",电脑识别不了U盘 二.可能原因 当U盘没在电脑上先弹出U盘,而是直接拔U盘时,就可能会导致U盘里面的数据损坏而导致识别不 ...

  2. Visual Studio 11增强HTML5和JS的支持

    Visual Studio 11增强HTML5和JS的支持 Mads Kristensen 在 TechDays 2012 海牙站上发表了一场很有趣的演讲,演讲内容是关于在 Visual Studio ...

  3. JS学习笔记 - 代码复用

    本文章记录本人在学习 JavaScript 中看书理解到的一些东西,加深记忆和并且整理记录下来,方便之后的复习. js 中复用代码 说道代码复用,一般都会涉及到对象继承.在js中有许多可以选择的继承方 ...

  4. JS数组去重的6种算法实现

    1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...

  5. js的数据类型,以及如何判断它们是哪种类型

    一.js的数据类型:null . nudefined .number.Boolean.string.array.object 二.判断js的数据类型 (1)值类型 console.log(typeof ...

  6. Node.js中的常用工具类util

    util是一个Node.js核心模块,提供常用函数的集合,用于弥补JavaScript的功能的不足,util模块设计的主要目的是为了满足Node内部API的需求.其中包括:格式化字符串.对象的序列化. ...

  7. JS高级程序设置笔记(二)

    5.4 RegExp类型 用这个类来表示正则表达式. var expression = /pattern/flags; pattern部分是任何简单的或者复杂的正则:每一个正则都有一个或者多个标志. ...

  8. JavaScript深入【表达式和运算符(上集)】你能过我8关js运算符的题目吗?

    博主留言 (茗洋芳竹) 每一个高手成功之路,都要学会怎样与孤独打交道 .我是个傻孩子,孤独竟然是我的夫人,每天晚上都会坐在我旁边看我学习,写博客.马上要离开ASP.NET生涯,投奔PHP了,一切都是那 ...

  9. JS高级进阶之ECMAScript 常见面试题

    1.es5和es6的区别,说一下你所知道的es6 ECMAScript5,即ES5,是ECMAScript的第五次修订,于2009年完成标准化 ECMAScript6,即ES6,是ECMAScript ...

最新文章

  1. libevent源码深度剖析
  2. 解决:【异常】Caused by: java.lang.IllegalStateException: Zip64 archives are not supported
  3. Flink从入门到精通100篇(八)-美团点评是如何在 Flink平台建立 实时数仓的?
  4. oracle中sql命令分为几类,常用的SQL命令和ORACLE命令对比
  5. php网站适合优化_php开发大型网站如何优化的方案详解
  6. GlusterFS安装配置
  7. [react] 怎么使用Context开发组件?
  8. comment.html手机文件,comment.html
  9. 某大型银行深化系统技术方案之十四:服务层之服务调度机制
  10. MySQL8 OCP 证书
  11. 白话CMMI(一)——CMMI扫盲
  12. oracle dba_users,为什么dba_users里有的用户却总是select不出来
  13. 纳人才,谋发展 | 人大金仓喜获“最佳雇主校招案例奖”
  14. SCI论文写作是用主动语态好还是被动语态好?
  15. 你这简历一看就是包装过的
  16. PDL格式解决方案Aspose.Page重磅上新!两大文档格式功能助力文档管理!
  17. poi3.17导出excel添加附件解决办法
  18. 一牛网:PCB layout设计培训:免费试听,可预约报名
  19. Esper epl语句详解
  20. jQuery-表单流程导航

热门文章

  1. Gearman 心得
  2. c 语言生成一个随机4位数,PLC如何产生一个随机数(含代码)
  3. Linux: Intel Eethernet driver:ixgbe i40e;error “Adapter removed“
  4. 石墨烯能带matlab,锯齿石墨烯能带matlab计算程序
  5. NLP文本提取中打标签列表和方案
  6. 怡丰机器人上市_成立三年之内 机器人领域的这些黑马公司不可不知
  7. 【Nutz】Nutz起步
  8. 第四类互联网交互模式──威客模式
  9. 一起Talk Android吧(第一百八十六回:Android中的AsyncTask机制五)
  10. 当ie浏览器无法上网时