1.javascript简介
JavaScript 最初由网景公司开发的一种脚本语言,被大量地应用于网页中,用以实现网页和浏览者的动态交互。目前几乎所有的浏览器都可以很好地支持 JavaScript。由于 JavaScript 可以及时响应浏览者的操作,控制页面的行为表现,提高用户体验,因而已经成为前端开发人员必须掌握的语言之一。
JavaScript 是为满足制作动态网页的需要而诞生的一种编程语言,在 HTML 基础上,使用 JavaScript 可以开发交互式(网页)Web。JavaScript 的出现使得网页和用户之间实现了实时、动态和交互的关系。
2.JavaScript的组成部分
标准化后的 JavaScript 包含了 3 个组成部分:
1.ECMAScript
脚本语言的核心内容,定义了脚本语言的基本语法和基本对象。现在每种浏览器都有对ECMAScript标准的实现。
2.DOM(Document Object Model)
文档对象模型,浏览器中的DOM把整个网页规划成由节点层级构成的树状结构的文档,用DOM API可以轻松地删除、添加和替换文档树结构中的节点。
3.BOM(Browser Object Model)
浏览器对象模型,描述了对浏览器窗口进行访问和操作的方法和接口。
3.JavaScript的特点
JavaScript 是一种运行在浏览器中的主要用于增强网页的动态效果、提高与用户的交互性的编程语言。相比于其他编程语言,它具有许多特点,主要包括以下几方面。
-
解释性
JavaScript 不同于一些编译性的程序语言,它是一种解释性的程序语言,它的源代码不需要经过编译,直接在浏览器中运行时进行解释。
-
动态性
JavaScript 是一种基于事件驱动的脚本语言,它不需要经过 Web 服务器就可以对用户的输入直接做出响应。
-
跨平台性
JavaScript 依赖于浏览器本身,与操作环境无关。任何浏览器,只要具有JavaScript脚本引擎,就可以执行JavaScript。目前,几乎所有用户使用的浏览器都内置了JavaScript脚本引擎。
-
安全性
JavaScript 是一种安全性语言,它不允许访问本地的硬盘,同时不能将数据存到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。这样可有效地防止数据丢失。
-
基于对象
JavaScript 是一种基于对象的语言,同时也可以被看作是一种面向对象的语言。这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
4.JavaScript的使用方式
1.行内式( 直接将js代码写在标签的内部)
<a href="javascript:alert('hello javascript');">点一下试试</a>
<button type="button" onclick="javascript:alert('hello javascript');">点一下</button>
2.内嵌式(将js代码写在script标签中)
推荐
<head>
<script type="text/javascript">
alert('hello javascript');
</script>
</head>
script标签可以放在body中,也可以放在head中(推荐
)
3.外链式(将js代码写在外部独立的文件中)
<script type="text/javascript" src="../js/my.js"></script>
5.JavaScript中的输入和输出方式
5.1输入方式
使用window对象提供的prompt对象可以实现用户数据的输入
window.prompt('请输入数据');
5.2输出方式
使用警告窗口实现数据的输出
window.alert('hello javascript');
输出数据到控制台
console.log('hello javascript');
输出数据到页面
document.write('hello javascript');
6.JavaScript注释
JavaScript的注释分为两种类型:
1.单行注释
//单行注释
2.多行注释
/* 多行注释*/
7.JavaScript变量
**1.什么是变量**
通俗的讲,变量类似与一个存放东西的容器,从计算机的角度讲,变量指代的是计算机内存中的一段内存空间,用于存数据
**2.JavaScript中如何定义一个变量**
1.使用var关键字声明变量
var age ;//程序执行到这一步时,会在内存中开辟一段内存空间
age=18; //将数字18放入刚刚开辟的空间中
var age=18; //定义变量的同时,赋值
2.变量命名规则
1.变量可以由数字,字母、英文下划线,美元$组成
2.不能以数字开头 a1 1a
3.不能使用关键字或者保留字 var for while ......
4.严格区分大小写 age Age 是不同的变量
5.变量名字要见名知意
6.使用驼峰命名法 (首字母小写,后面单词的首字母大写 myName)
案例:
1.使用变量输出自己的信息 (姓名 性别 年龄 学历 专业 邮箱 工资 电话)
2.交换两个变量的值
8.JavaScript数据类型
JavaScript中数据的类型大体可以分为两种,简单类型和复杂类型
简单类型
数值型 | number |
---|---|
字符型 | string |
布尔型 | boolean |
未初始化 | undefined |
空值 | null |
复杂类型包含数组和对象等
js中的变量是一种动态数据类型,也就是变量本身是没有数据类型的,只有赋值以后才有了类型
。
var a="张三";
如何判定数据的类型?
在js中判断一个变量的数据类型可以使用 typeof 运算符
var num = 20;
console.log(typeof num); //number
var name="张三";
console.log(typeof name); //string
var blen = true;
console.log(typeof blen); //boolean
var age;
console.log(typeof age) //undefined
var n = null;
console.log(typeof n) //object
var a=function(){}
console.log(typeof a) //function
数据类型的转换
1.其他类型转化成字符串类型
//数字类型转换成字符串
var num =10;
var temp = num.toString();
console.log(typeof temp);
console.log(String(num));
//使用 + 实现隐式转换
console.log(num+'');
//布尔类型转换成字符串
var b = true;
var temp =b.toString();
console.log(typeof temp);
2.其他类型转化成数字类型
//字符型转化为数字型
var age = prompt('请输入您的年龄');
console.log( typeof age);
age = parseInt(age);
console.log( typeof age);
var p = '20px';
console.log(parseInt(p));
var price =prompt('请输入单价');
console.log( typeof price);
price = parseInt(price);//取整 不会四舍五入
console.log(price);
//小数的转换
price = parseFloat(price);
console.log(price);
//使用 Number(变量名)转换
var p = '120';
p = Number(p);
console.log(p);
console.log( typeof p);
//使用 - * / 实现隐式转换
var num = '10';
num = num -0;
console.log( num);
console.log( typeof num);
3.其他类型转换为布尔类型
console.log(Boolean('')); //false
console.log(Boolean(0)); //false
console.log(Boolean(NaN));//false
console.log(Boolean(null));//false
console.log(Boolean(undefined));//false
9.JavaScript 运算符
9.1JavaScript 算数运算符
算数运算符用于对数字执行算数运算:
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 系数(取余) |
++ | 递加 |
-- | 递减 |
//加法
var x = 7;
var y = 8;
var z = x + y;
console.log(z);
//除法
x = 3;
y = 2;
console.log(3/2);
console.log(3%2);
/* ++ --
1:后置++ 是将自身的值赋给变量,之后自身再加1;
2:前置++ 是将自身+1 后的值赋给变量,同时自身加1;
*/
var a = 1;
b = a ++;
console.log('a=' + a + ' ' +'b='+ b); // a = 2 , b = 1
var a = 1 ;
b = ++a ;
console.log('a=' + a + ' ' +'b='+ b)//a = 2 b=2
9.2JavaScript 赋值运算符
赋值运算符向 JavaScript 变量赋值
运算符 | 例子 | 等同于 |
---|---|---|
= | x = y | x = y |
+= | x += y | x = x + y |
-= | x -= y | x = x - y |
*= | x *= y | x = x * y |
/= | x /= y | x = x / y |
%= | x %= y | x = x % y |
var x=2;
var y=3;
x+=2;
y-=1;
console.log(x);
console.log(y);
9.3JavaScript 比较运算符
运算符 | 描述 |
---|---|
== | 等于 |
=== | 等值等型 |
!= | 不相等 |
!== | 不等值或不等型 |
> | 大于 |
< | 小于 |
>= | 大于或等于 |
<= | 小于或等于 |
? | 三元运算符 |
var a=1;
var b=2;
console.log(a==b);
var a=1;
var b='1';
console.log(a==b); //true
console.log(a===b); //false
console.log(a!=b); //false
console.log(a!==b); //true
// 三元运算符
var a=1;
var b=2;
var str = a>b ? "a大于b":"a小于b"; //当条件为真时 执行前面的表达式 否则执行后面的表达式
console.log(str);
9.4JavaScript 逻辑运算符
运算符 | 描述 |
---|---|
&& | 逻辑与 |
|| | 逻辑或 |
! | 逻辑非 |
var b = true;
var c= false;
console.log(b&&c); //false
console.log(b||c);
console.log(!b);//false
9.5JavaScript 类型运算符
运算符 | 描述 |
---|---|
typeof | 返回变量的类型。 |
instanceof | 返回 true,如果对象是对象类型的实例。 |
9.6JavaScript 位运算符
位运算符处理 32 位数。
该运算中的任何数值运算数都会被转换为 32 位的数。结果会被转换回 JavaScript 数值。
运算符 | 描述 | 例子 | 等同于 | 结果 | 十进制 |
---|---|---|---|---|---|
& | 与 | 5 & 1 | 0101 & 0001 | 0001 | 1 |
| | 或 | 5 | 1 | 0101 | 0001 | 0101 | 5 |
~ | 非 | ~ 5 | ~0101 | 1010 | 10 |
^ | 异或 | 5 ^ 1 | 0101 ^ 0001 | 0100 | 4 |
10.JavaScript 流程控制
流程控制(代码按照一定的顺序进行执行)分类:
10.1顺序结构
代码自上而下依次执行,所有的代码都将被执行
10.2分支结构
根据不同的条件,执行不同路径的代码(代码多选一),得到不同的结果
if分支:
语法结构:
//单分支
if(条件表达式){
//条件满足时执行的代码
}
//根据年龄判断是否成年
//双分支
if(条件表达式){
//条件满足时执行的代码
}else{
//条件不满足时执行的代码
}
//判断年份是否是闰年 能被4整除且不能被100整除 能被400整除
//多分支
if(条件表达式1){
//条件满足时执行的代码
}else if(条件表达式2){
//条件满足时执行的代码
}else if(条件表达式3){
//条件满足时执行的代码
}......
else{
//以上条件都不满足时执行的代码
}
//根据分数 给出成绩等级
switch分支
语法结构:
switch(表达式){
case value1:
//满足条件执行代码
break;
case value2:
//满足条件执行代码
break;
case value3:
//满足条件执行代码
break;
....
default:
//以上条件都不满足执行代码
}
//楼层查询案例
switch 注意事项:
1.表达式一般是一个变量 方便进行值的替换
2.表达式和case里面的值在匹配的时候 ,是做的全等运算 ===
3.如果当前的case没有break,则不会退出,会继续执行下一个case
10.3循环结构
循环是反复不断的执行某些代码块
需求:打印输出100次hello world
for 循环
/*
for循环语法结构 一般使用在已知循环次数的情况下
初始化变量:用于计数
条件表达式:循环的终止条件
操作表达式:更新计数器
*/
for(初始化变量;条件表达式;操作表达式){
//需要循环执行的代码
}
//for循环的执行过程
for(var i=1;i<=100;i++){
console.log('hello');
}
while循环
//while循环语法结构 一般使用在未知循环次数的情况下
while(条件表达式){
//需要循环执行的代码
}
do...while 循环
//do while循环语法结构 一般使用在要先执行在判定的条件下
do{
//需要循环执行的代码
}while(条件表达式)
break continue的使用
break用于终止整个循环
for (var i = 0; i <10 ; i++) {
if (i==3){
break;
}
console.log(i)
}
//结束离其最近的循环体
for (var j = 0; j <5 ; j++) {
for (var i = 0; i <10 ; i++) {
if (i==3){
break;
}
console.log(i)
}
}
continue用于终止某一次循环
for (var i = 0; i <5 ; i++) {
if (i==3){
continue;
}
console.log(i)
}
11.JavaScript 数组
1.数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值
2.数组中的每个元素都有自己的的ID(index 下标),以便它可以很容易地被访问到
1、数组的创建
1.创建一个数组
var myCars=new Array() myCars[0]="Saab"; myCars[1]="Volvo" myCars[2]="BMW"
2.创建一个数组并指定长度,注意不是上限,是长度
var array = new Array([size]);
3.创建一个数组并赋值
var myCars=new Array("Saab","Volvo","BMW");
4.字面形式
var myCars=["Saab","Volvo","BMW"];
2.数组的元素的访问
通过指定数组名以及索引号码,你可以访问某个特定的元素。
var name=myCars[0];
myCars[0]="Opel";
3.数组的遍历
使用for循环实现数组的遍历
var array = [23, 12, 5, 19, 3];
for (var i = 0; i < array.length; i++) {
console.log(array[i])
}
4.数组元素的添加、删除、截取、合并、拷贝
1.将一个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj. push();
var array3 =[1,2,3,4,5];
//添加元素到数组的最后 返回新数组的长度
var len = array3.push(12)
console.log(array3)
console.log(len)
2.将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.unshift();
//添加元素到数组的最前面 返回新数组的长度
len = array3.unshift(0);
console.log(array3)
console.log(len)
3.将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回删除后的元素。
arrayObj.splice(start,deleteNum,insert);
/*
插入元素到数组指定的位置
第一个参数 start 从哪里开始
第二个参数 delNum 删除元素的个数
第三个参数 insert 插入的新元素
1.只写一个参数 会从指定开始的位置开始删除直到数组的末尾 以数组的形式返回删除的元素
2.写两个参数 会从指定的位置 删除指定个数的元素 并以数组的形式返回
3.写三个参数 从指定位置开始 删除指定的元素,并将新元素从指定开始的位置添加 返回删除的元素
*/
var arr = array3.splice(0)
console.log(arr)
console.log(array3)
console.log(array3.toString())
var arr = array3.splice(1,2)
console.log(arr)
console.log(array3.toString())
console.log(array3.toString())
var arr = array3.splice(1,2,28)
console.log(arr)
console.log(array3.toString())
4.移除最后一个元素并返回该元素值
arrayObj.pop();
var array = [23, 12, 5, 19, 3];
var temp = array.pop();
console.log(temp)
console.log(array.toString())
5.移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.shift();
var array = [23, 12, 5, 19, 3];
var temp = array.shift();
console.log(temp)
console.log(array.toString())
6.删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
arrayObj.splice(deletePos,deleteCount);
var array = [23, 12, 5, 19, 3];
var temp = array.splice(1,4);
console.log(temp)
console.log(array.toString())
7.以数组的形式返回数组的一部分,注意不包括 end
对应的元素,如果省略 end 将复制start 之后的所有元素
arrayObj.slice(start, [end]);
var array = [23, 12, 5, 19, 3];
var temp = array.slice(1,3)
console.log(temp)
console.log(array.toString())
8.将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]);
9.返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat();
var array4 = [10,11,13,14]
var a = array4.concat()
console.log(array4)
console.log(a)
5.数组的排序和翻转
反转元素(最前的排到最后、最后的排到最前),返回数组地址
arrayObj.reverse();
var array4 = [10,11,13,14]
array4.reverse();
console.log(array4)
对数组元素排序,返回数组地址
arrayObj.sort();
var array4 = [10,11,13,14,100,21]
console.log(array4)
array4.sort()
console.log(array4)
var array4 = [10,11,13,14,100,21]
console.log(array4)
array4.sort(function(a,b){return a-b})
console.log(array4)
sort()默认的排列方式是按照字符的unicode码进行排列的,在排列数值的时候会出现问题,因此需要依赖一个比值函数function(a,b){return a-b}
编写代码实现数组的排序
var array = [10,2,16,30,8]
console.log(array)
//冒泡排序法
for (let i = 0; i <array.length-1 ; i++) {
for (let j = 0; j <array.length-i-1 ; j++){
if(array[j]>array[j+1]){
var temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
}
}
}
6.获取数组的长度
length 属性
//1.判断数组中元素的个数
var array3 = [10,11,13,14,100,21]
console.log(array3.length)
12.JavaScript 函数
JavaScript 函数是被设计为执行特定任务的代码块,会在某代码调用它时被执行
为何使用函数?
-
能够对代码进行复用:只要定义一次代码,就可以多次使用它。
-
能够多次向同一函数传递不同的参数,以产生不同的结果。
JavaScript 函数语法
JavaScript 函数通过 function 关键词进行定义,其后是函数名和括号 (),函数名规则与变量名相同,圆括号可包括由逗号分隔的参数:(参数 1, 参数 2, ...),由函数执行的代码被放置在花括号中:{ }
function name(参数 1, 参数 2, 参数 3) {
要执行的代码
}
案例:
1.计算两个数字的和
//计算两个数字的和
var num1 = 1;
var num2 = 2;
var result = num1+num2;
/*
以上代码的写法无法实现代码的复用,如果后续还需要计算两个数字的和
以上代码还需要再写一次 造成代码的冗余,这时可以考虑将代码进行封装
写成函数的形式 因为使用函数可以实现代码的复用
*/
function add(num1,num2){
var res = num1+num2
console.log(res)
}
//调用函数 函数不会再页面加载后自动执行 需要手动的调用
add(1,2);
//为了后续能使用计算的结果 可以使用return将结果返回
function add(num1,num2){
var res = num1+num2
return res
}
var a = add2(1,2);
console.log(a+2); //5
//利用函数 实现简易计算器
function add(num1,num2){
return num1/1+num2/1;
}
function sub(num1,num2){
return num1-num2;
}
function mult(num1,num2){
return num1*num2;
}
function div(num1,num2){
return num1/num2;
}
let num1 = prompt('请输入第一个数')
let num2 = prompt('请输入第二个数')
let operator = prompt('请输入运算符')
switch(operator){
case '+':
alert(add(num1,num2))
break;
case '-':
alert(sub(num1,num2))
break;
case '*':
alert(mult(num1,num2))
break;
case '/':
alert(div(num1,num2))
break;
default:
console.log('请输入正确的运算符!')
}
使用函数实现数组排序代码的复用
案例:
1.提示用户输入一个数组的长度
2.用户输入数组中的数值 ,要保证用户输入的值是数值
3.将用户输入值组成的数组排序
//获取数组
var len = prompt('请输入数组的长度')
var array = new Array();
do{
var num = prompt('请输入数字')
if(isNaN(num)){
continue
}
array.push(num);
}while (array.length<len)
//函数实现代码复用
function getArray(length){
var array = new Array();
do{
var num = prompt('请输入数字')
if(isNaN(num)){
continue
}
array.push(num);
}while (array.length<length)
return array;
}
//数组排序
function sortArray(ary){
var array = ary
for (var i = 0; i <array.length-1 ; i++) {
for (var j = 0; j <array.length-i-1; j++){
if(array[j]>array[j+1]){
var temp = array[j]
array[j] = array[j+1]
array[j+1] = temp
}
}
}
return array;
}
13.JavaScript 作用域
作用域:
变量或者函数可以访问的范围,分为两种:
1.全局作用域:在全局使用var关键字声明的变量 ,可以再任意的范围访问
2.函数作用域: 在函数内使用var关键字声明的变量,只能在函数内部访问
var a = 10
console.log(a) //10
/*
js程序执行前 会将使用var关键字声明的变量提升所在作用域的最前面,
但是赋值还是在原来的位置
*/
console.log(a) //undefined
var a = 10
//以上代码作用域提升后 可以改写为
var a;
console.log(a) //undefined
a=10
function fn(){
//局部变量作用域提升
console.log(b) //undefined
var b = 10;
}
var a = 10; //全局作用域下的变量 全局变量
function fn(){
var b = 2 //函数作用域下使用var关键字声明的变量 局部变量
// console.log(a)
console.log(b)
}
console.log(a)
fn() //调用函数 执行函数体内的代码
console.log(b); //b是在函数内部定义的 在外部无法访问
var n = 10
function fn(){
console.log(n//undefined
var n = 5
}
console.log(n)
var m =1
function fn3(m){ //参数在函数中相当于一个局部变量
m=m+3
}
console.log(m)
function fn4(){
var a=b=c=2;
}
fn4();
console.log(a) //a is not defined
console.log(b) //2
console.log(c) //2
递归
函数的内部自己调用自己本身,默认是一个死循环,因此在使用递归的时候需要添加限制条件
function say(){
alert('hello')
say()
}
say()
var i = 0
function say(){
i++
alert('hello')
if(i===3){
return; //结束函数体的执行
}
say()
}
say();
案例:
计算1-5之间所有整数的和
function getSum(num){
if(num==1){
return 1
}
return num+getSum(num-1)
}
菲波那切数列
function fb(n){
if(n==1 || n==2){
return 1;
}
return fb(n-1)+fb(n-2)
}
14.JavaScript自定义对象
什么是对象
现实世界的万物皆对象,对象是看得见,摸得着的事物,比如一个水杯, 一个人
创建对象的三种方式
1.利用字面量创建对象
使用大括号,括号里包含了对象的属性和方法
var obj = {} //空对象
var ob = {
name:‘张三’,
age:20,
sex:'男'
say:function(){
console.log('hello')
}
}
//使用对象 访问对象的属性 对象名.属性名 对象名['属性名']
ob.name
//调用对象的方法 对象名.方法名()
ob.say()
2.利用new Object创建对象
var obj = new Object()
o.name = "zs"
o.age =20
o.say = function(){
alert('123')
}
alert(o.name)
alert(o.age)
o.say()
3.利用构造函数创建对象
构造函数是一种特殊的函数,只要是用来初始化对象,即为对象的成员变量赋初始值,它总与new关键字一起使用,可以把对象中的一些公共的属性和方法抽取出来,然后封装到函数里。
//构造函数的语法格式
function 函数名(){
this.属性名=值,
this.方法名 = function(){}
}
new 构造函数名()
function Person(name,age,sex) {
this.sex = sex,
this.name = name,
this.age = age
this.say = function () {
alert('345')
}
}
var person = new Person('zsan',25,'nan');
alert(person.age)
person.say()
//遍历对象
for(key in person){
alert(key)
alert(person[key])
}
15.JavaScript 常用内置对象
15.1 String(字符串)对象
length 属性返回字符串的长度
var txt = "ABCDEF";
var sln = txt.length;
indexOf() 方法返回字符串中指定文本首次出现的索引(位置):0 是字符串中的第一个位置,1 是第二个,2 是第三个 ...
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China");
lastIndexOf() 方法返回指定文本在字符串中最后一次出现的索引
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China");
如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("USA");
两种方法都接受作为检索起始位置的第二个参数
var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China", 18);
var pos = str.lastIndexOf("China", 50);
search() 方法搜索特定值的字符串,并返回匹配的位置:
var str = "The full name of China is the People's Republic of China.";
var pos = str.search("locate");
提取部分字符串
有三种提取部分字符串的方法:
-
slice(start, end)
-
substring(start, end)
-
substr(start, length)
slice() 方法
slice() 提取字符串的某个部分并在新字符串中返回被提取的部分。
该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
这个例子裁剪字符串中位置 7 到位置 13 的片段:
var str = "Apple, Banana, Mango";
var res = str.slice(7,13); //Banana
如果某个参数为负,则从字符串的结尾开始计数。这个例子裁剪字符串中位置 -12 到位置 -6 的片段:
var str = "Apple, Banana, Mango";
var res = str.slice(-13,-7); //Banana
如果省略第二个参数,则该方法将裁剪字符串的剩余部分:
var res = str.slice(7);
或者从结尾计数:
var res = str.slice(-13);
substring() 类似于 slice()
不同之处在于 substring() 无法接受负的索引。
var str = "Apple, Banana, Mango";
var res = str.substring(7,13);
res 的结果是:
Banana
如果省略第二个参数,则该 substring() 将裁剪字符串的剩余部分。
substr() 类似于 slice()
不同之处在于第二个参数规定被提取部分的长度。
var str = "Apple, Banana, Mango";
var res = str.substr(7,6);
res 的结果是:
Banana
如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分
var str = "Apple, Banana, Mango";
var res = str.substr(7);
res 的结果是:
Banana, Mango
如果首个参数为负,则从字符串的结尾计算位置。
var str = "Apple, Banana, Mango";
var res = str.substr(-5);
res 的结果是:
Mango
第二个参数不能为负,因为它定义的是长度
replace() 方法用另一个值替换在字符串中指定的值,默认地,replace() 只替换首个匹配
str = "Please visit Microsoft and Microsoft!";
var n = str.replace("Microsoft", "W3School");
replace() 对大小写敏感。因此不对匹配 MICROSOFT
str = "Please visit Microsoft!";
var n = str.replace("MICROSOFT", "W3School");
如需执行大小写不敏感的替换,请使用正则表达式 /i(大小写不敏感)
str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "W3School");
如需替换所有匹配,请使用正则表达式的 g 标志(用于全局搜索)
str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "W3School");
toUpperCase() 把字符串转换为大写,toLowerCase() 把字符串转换为小写
var text1 = "Hello World!";
var text2 = text1.toLowerCase();
text2 = text1.toUpperCase();
concat() 连接两个或多个字符串
var text1 = "Hello";
var text2 = "World";
text3 = text1.concat(" ",text2);
concat() 方法可用于代替加运算符,下面两行是等效的
var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ","World!");
trim() 方法删除字符串两端的空白符
var str = " Hello World! ";
alert(str.trim());
提取字符串字符的方法
charAt() 方法返回字符串中指定下标(位置)的字符串
var str = "HELLO WORLD";
str.charAt(0); // 返回 H
/*charCodeAt() 方法返回字符串中指定索引的字符 unicode 编码*/
var str = "HELLO WORLD";
str.charCodeAt(0);
可以通过 split() 将字符串转换为数组
var txt = "a,b,c,d,e"; // 字符串
txt.split(","); // 用逗号分隔
txt.split(" "); // 用空格分隔
txt.split("|"); // 用竖线分隔
案例:
统计字符串中出现次数最多的字符是哪个,出现了几次 str = "abcdeereeryhhssqqq"
15.2数字对象 Math
Math.PI; //3.1415