javascript初识

Posted luckinlee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript初识相关的知识,希望对你有一定的参考价值。

javascript-js

JS介绍

#ECMAScript和javascript的关系
    该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性,因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。
#一个完整的javascript的三个部分
    1:ECMAscript js的一种标准化规范 标出了一些基础的js语法
    2:DOM document object model 文本对象模型 主要操作文档中的标签(整合js,css,html)
    3:BOM browser object model 浏览器对象模型 主要用来操作浏览器(整合js和浏览器)
    简单地说,ECMAScript 描述了JavaScript语言本身的相关内容
    JavaScript 是可插入 HTML 页面的编程代码 JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行

js的引入

<!--方式一:直接在HTML页面的script的标签里写-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    /*alert是控制浏览器的弹窗的,运行文件就会在页面上显示一个弹窗,*/
    alert('nihao shijie ')
</script>
</body>
</html>
<!--方式二:引入js文件的方式-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <!--创建一个js文件,然后通过script标签的src属性引入进来-->
    <script src="firse.js"></script>
</body>
</html>

js的结束符和注释

//结束符:
    ;分号是js代码的结束符
//单行注释
/*多行注释*/

js的特点

(1)简单易用:可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序。
(2)解释执行(解释语言):事先不编译、逐行执行、无需进行严格的变量声明。
(3)基于对象:内置大量现成对象,编写少量程序可以完成目标

js变量的定义

//变量名有命名规范:只能由英语字母、数字、下划线、美元符号$构成,且不能以数字开头,并且不能是JavaScript保留字,变量区分大小写也就是说A和a是两个变量
//js保留字
    abstract、boolean、byte、char、class、const、debugger、double、enum、export、extends、final、float、goto,implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile
//变量的定义和赋值
    var a = 100; 
-   var是英语“variant”变量的缩写。后面要加一个空格,空格后面的东西就是“变量名”,定义变量:var就是一个关键字,用来定义变量。所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开。变量的赋值:等号表示赋值,将等号右边的值,赋给左边的变量。变量名:我们可以给变量任意的取名字。
#创建变量的关键字是var var a=1;
#创建变量可以不指定数据类型
#创建变量但是不赋值:var a; a创建出来的就是一个undefined未定义的数据类型

js输入输出

#弹出框
    alert('hello')弹出框中的内容为hrllo
#弹出输入框
    var inp=prompt('问句');弹出输入框,输入的内容会返回给inp
#控制台输出
    console.log('变量或者值')

基础数据类型

数字(number)

#js中小数和整数丢都是数字类习惯
    var a=1;
    bar b=0.1;
#查看数据类型typeof,括号可以加,可以不加
    typeof(a);
    typeof b;
#小数点的保留
    var num = 2.379
    var newNum = num.toFixed(2)
    console.log(newNum)
#NaN是数字类型的一个关键字,意思是不是一个数字,但是他的数据类型也是number,布尔值为false
#Infinity是一个数字类型的关键字,意思是无限大的意思,他的Boolean的值为true

字符串string

#单引号和双引号都可以,都是字符串的表达方式
#.length,返回长度:注意length不用加括号,它是一个属性不是一个方法
    console.log(a.length)
#trim 去除字符串两边的空格
    var  str =  '     我的天呢     ';
    console.log(str.trim());//我的天呢
#cancat 返回字符串值,用来两个或者多个字符串的值
    var str1 = 'alex';
    var str2  = 'sb';
    console.log(str1.concat(str2,str2));//alexsbsb
#charAt 返回指定索引位置的字符
    var str = 'alex';
    var charset = str.charAt(1);
    console.log(charset);//l
#indexOf/search 查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。
    var str = 'alex';
    console.log(str.indexOf('e'));//2
    console.log(str.indexOf('p'));//-1
    console.log(str.search('e'));//2
    console.log(str.search('p'));//-1
#slice(start,end) 切片。左闭右开 分割数组 接收负参数
    var str = '小马哥';
    console.log(str.slice(1,2));//马
#substr(start,length) 返回一个字符串:从指定位置开始,取指定字符数.
    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.substr(0,4));//我的天呢
    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.substr(9,6));
    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.substr(-3,3));
#substring(indexStart,indexEnd) 切子字符串。顾头不顾尾
    如果 indexStart 等于 indexEnd,substring 返回一个空字符串。
    如果省略 indexEnd,substring 提取字符一直到字符串末尾。
    如果任一参数小于 0 或为 NaN,则被当作 0。
    如果任一参数大于 stringName.length,则被当作 stringName.length。
    如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样
#replace(a,b) 将字符串a替换成字符串b
    var a = '1234567755';
    var newStr = a.replace("4567","****");
    console.log(newStr);//123****755
#split('sep',n) 切割,根据n保留切割的数组长度
    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.split('a'));//["我的天呢,", "是嘛,你在说什么呢?", "哈哈哈"]  如果第二个参数没写,表示返回整个数组
    console.log(str.split('a',2));//["我的天呢,", "是嘛,你在说什么呢?"] 如果定义了个数,则返回数组的最大长度
#toLowerCase():全部变成小写:
    var str = 'EVA';
    console.log(str.toLowerCase());//eva
#toUpperCase():全部变成大写:
    var str = 'xiaomage';
    console.log(str.toUpperCase());
方法 说明
.length #不加括号的是属性 返回长度
.trim() #得到一个新值 移除空白
.trimLeft() 移除左边的空白
.trimRight() 移除右边的空白
.concat(value, ...) #s1=‘hello‘;s.concat(‘xx‘);得到helloxx 拼接
.charAt(n) #n类似索引,从0开始,超过最大值返回‘‘空字符串 返回第n个字符
.indexOf(substring, start) #这个start是从索引几开始找,没有返回-1 子序列位置
.substring(from, to) #不支持负数,所以一般都不用它,了解一下就行了 根据索引获取子序列
.slice(start, end) #var s1=‘helloworld‘;s1.slice(0,-5)看结果,就用它 切片
.toLowerCase() #全部变小写 小写
.toUpperCase() #全部变大写 大写
.split(delimiter, limit)#分隔,s1.splite(‘ ‘),后面还可以加参数s1.split(‘ ‘,2),返回切割后的元素个数 分割

布尔值boolean

#true或者false 注意:首字母小写
var b1 = false;
console.log(typeof b1)
#在js代码中'',0,NaN,null,undefined的布尔值都是false

空元素

#空元素打印布尔值为false
#null表示值是空,一般在需要指定或清空一个变量时才会使用,如 name=null;
var c1 = null;//空对象. object
console.log(c1)

未定义类型

#undefined打印的布尔值为false
#undefined表示当声明一个变量但未初始化时,该变量的默认值是undefined。还有就是函数无明确的返回值时,返回的也是undefined,
var d1;
//表示变量未定义:undefined
console.log(typeof d1)

object类型

#JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象
#示例:
var a='123456';
typaOf(a)//String
var b= new String('123456')
typeOf('b')//object
#通过new实例化出来的对象都是object类型,虽然看起来都是字符串但是打印的数据类型是不同的,字符串,数字类型,数组等内置对象都是object类型

typeof类型查询

undefined - 如果变量是 Undefined 类型的
boolean - 如果变量是 Boolean 类型的
number - 如果变量是 Number 类型的
string - 如果变量是 String 类型的
object - 如果变量是一种引用类型或 Null 类型的,需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。

技术图片

内置对象类型

数组Array

#数组的作用:
    使用单独的变量名来存储一系列的值。类似于Python中的列表
#数组的创建
    var colors = ['red','color','yellow']; //字面量方式创建(推荐)
    var colors2 = new Array();//使用构造函数的方式创建 使用new关键词对构造函数进行创建对象
#数组的赋值,通过下标的方式一一赋值
    var arr = [];
    //通过下标进行一一赋值
    arr[0] = 123;
    arr[1] = '哈哈哈';
    arr[2] = '嘿嘿嘿'
#数组的常用方法
    #concat方法:列表的拼接
    var north = ['北京','山东','天津'];
    var south = ['东莞','深圳','上海'];
    var newCity = north.concat(south);
    console.log(newCity)
    #join方法:将数组中的元素使用指定的字符串连接起来,它会形成一个新的字符串
    var score = [98,78,76,100,0];
    var str = score.join('|');
    console.log(str);//98|78|76|100|0   
    #toString方法:将数组转换成字符串
    var score = [98,78,76,100,0];
    //toString() 直接转换为字符串  每个元素之间使用逗号隔开          
    var str = score.toString();
    console.log(str);//98,78,76,100,0
    #slice(start,end):切片(左闭右开)
    var arr = ['张三','李四','王文','赵六'];
    var newArr  = arr.slice(1,3);
    console.log(newArr);//["李四", "王文"]
    #pop方法:删除尾元素
    var arr = ['张三','李四','王文','赵六'];
    var item = arr.pop();
    console.log(arr);//["张三", "李四","王文"]
    console.log(item);//赵六
    #push方法:向数组末尾添加一个元素或多个元素,并返回新的长度(返回值)
    var arr = ['张三','李四','王文','赵六'];
    var newLength= arr.push('小马哥');//可以添加多个,以逗号隔开
    console.log(newLength);//5
    console.log(arr);//["张三", "李四","王文","赵六","小马哥"]
    #reverse()方法:翻转数组
    var names = ['alex','xiaoma','tanhuang','angle'];
    names.reverse();
    console.log(names);
    #sort()方法:排序:js的排序会把值变成字符串没在判断每个元素第一个值的ascii码顺序
    var names = ['alex','xiaoma','tanhuang','abngel'];
    names.sort();
    console.log(names);// ["alex", "angle", "tanhuang", "xiaoma"]
    //关于sort()需要注意:
      如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,也就是自己提供一个函数提供排序规则,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
      若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
      若 a 等于 b,则返回 0。
      若 a 大于 b,则返回一个大于 0 的值。
    示例:
        function sortNumber(a,b)
            return a - b
        
        var arr1 = [11, 100, 22, 55, 33, 44]
        arr1.sort(sortNumber)
    #Array.isArray(被检测的值):判断是否为数组
    布尔类型值 = Array.isArray(被检测的值) ;
    # shift():删除并返回数组的第一个元素 
    var arr = [1,2,3]
    var n = arr.shift()
    console.log(arr)
    console.log(n)
    # unshift():向数组的开头添加一个或更多元素,并返回新的长度
    var arr = [1,2,3]
    var n = arr.unshift(0)
    console.log(arr)
    console.log(n)
    var arr = [1,2,3]
    var n = arr.unshift('alex','wahaha')
    console.log(arr)
    console.log(n)
    #清空数组的几种方式
    var array = [1,2,3,4,5,6];
    array.splice(0);      //方式1:删除数组中所有项目
    array.length = 0;     //方式2:length属性可以赋值,在其它语言中length是只读
    array = [];           //方式3:推荐
    #forEach方法,设定每一个元素执行某函数
    var arr = ['alex','wusir']
    arr.forEach(fn)
    function fn(item,index)
        console.log(index,item)
    
    #map方法,循环每一个元素完成某操作返回新的值组成新数组
    var arr = ['alex','wusir']
    var ret = arr.map(fn)
    function fn(name,index) 
        console.log(index,name)
        return name+'sb'
    
    console.log(ret)
#数组打印的数据类型为:object类型
方法 说明
.length 数组的大小
.push(ele) 尾部追加元素
.pop() 获取尾部的元素
.unshift(ele) 头部插入元素
.shift() 头部移除元素
.slice(start, end) 切片
.reverse() #在原数组上改的 反转
.join(seq)#a1.join(‘+‘),seq是连接符 将数组元素连接成字符串
.concat(val, ...) #连个数组合并,得到一个新数组,原数组不变 连接数组
.sort() 排序
.forEach() #讲了函数再说 将数组的每个元素传递给回调函数
.splice() #参数:1.从哪删(索引), 2.删几个 3.删除位置替换的新元素(可多个元素) 删除元素,并向数组添加新元素。
.map() #讲了函数再说 返回一个数组元素调用函数处理后的值的新数组

自定义对象

var str1 = '"name": "chao", "age": 18';//json格式的字符串
var obj1 = "name": "alex", "age": 18;//自定义对象
var obj2 = name:'chao',age:18;//自定义对象
//自定义对象可以使用字典的方式取值也可以使用对象点的方式取值,使用字典的方式取值的时候中括号内的键要写成字符串的格式,否则会报错
obj1.name//'alex'
obj1['name']//'alex'
obj2['name']//'chao'
// JSON字符串转换成对象
var obj = JSON.parse(str1); 
// 对象转换成JSON字符串
var str = JSON.stringify(obj1);
遍历对象中的内容
var a = "name": "Alex", "age": 18;
for (var i in a)
  console.log(i, a[i]);

数据类型装换

字符串转数字

#使用parseInt()函数把字符串转成int
    var a='123456';
    parseInt(a)//123456
    var b='123456lijie';
    parseInt(b)//123456   parseInt会帮你自动过滤掉字符
    var c='lijie';
    parseInt(c)//NaN  全是字符的时候会返回一个NaN关键字,他是数字类型的一个关键字
    typeof(NaN)//number 返回的也是一个数字类型
#使用parseFloat()函数可以把字符串转成一个小数
    var d='1.233';
    parseFloat(d)//1.233

数字类型转字符串

#数字类型转换成数字类型使用String的字符串关键字来转
    var a=123456;
    String(a)//'123456'
#还可以使用数字类型自带的方法toString转换成字符串
    var b=123456;
    b.toString();//'123456'

转换成Boolean值

#任何数据类型都可以转换成Boolean类型
    var a='123456';
    Boolean(a)//true
    Boolean(NaN)//false
#布尔值在判断空的数组和空的对象的时候返回的也是true,这是一个坑

运算符

赋值运算符

#以 var x=12,y=7; 为例

技术图片

比较运算符

#以 var x=5;为例
==号也被称为弱等于,===称为强等于,==号会把比较的来个那个数据变成一个数据类型再比较,

技术图片

算数运算符

#以 var a = 5,b=2;为例
//注意:坑
    '+': 字符串可相加,数字也可相加,字符串和数字也可以相加。值得注意的是,如果字符串和数字相加会自动把结果转换成字符串
    '-':字符串 - 数值 = 数值
#当数字类型执行++操作的时候,需要区分他的优先级
    var a=1;
    a++-1//0,当++写在a的后面的时候就先执行逻辑,然后数字再执行++操作
    ++a-1//1,当++写在a的前面的时候先执行++操作,然后再执行运算操作

技术图片

逻辑运算符

# && 逻辑与  ||逻辑或  !逻辑非
true && true //true 相当于python的and
true || false//false 相当于python的or
!true // false 相当于python的not

if流程判断

简单的流程判断

var a=5;
#判断条件使用括号括起来,大括号是满足条件的执行结果,用分号表示结束,在js中没有明确的换行操作
if (a>4)console.log('你好世界');;

- **多条件判断操作**javascript
#在js中没有elif,elif使用else if 表示
var a=4;
if (a>4)
console.log(‘大于‘);
else if(a<4)
console.log(‘小于‘);
else
console.log(‘等于‘);
;
```

switch切换

var a=1;
#swith的括里面必须是一个值或者是一个值的算数才行,这个值和后面的写的case条件后面的值逐个比较,满足其中一个就执行case下面的console语句,然后break停止,如果没有break就继续执行下面的判断
switch(a++)
    case 1:
        console.log('等于1');
        break;
    case 2:
        console.log('等于2');
        break;
    case 3:
        console.log('等于3');
        break;
    #当上面的case都不满足的时候就执行default语句
    default:
        console.log('都不满足');

for循环

#打印0-9的数字,先申明一个变量,然后写上限制条件,每次i的值自增,不满足条件就会停止
//for (;;)console.log(i),不写参数和条件的时候就会变成一个死循环
for(var i=0;i<10;i++)
    console.log(i)

#循环数组
var a=[1,2,3,4,5,6,7,8];
//遍历数组的时候,这个i返回的是这个数组每个元素的索引,可以根据索引取值,
for (var i in a)
    console.log(i,a[i])

#遍历自定义对象
var b=1:'hhe',2:'ejje',3:'jej';
//遍历自定义对象的时候,这个i返回的是自定义对象的每个键,可以根据键来获取值
for (var i in b)
    //在遍历的时候不能使用对象点的方式来获取值,i是一个字符串,只能使用中括号的形式来取值
    console.log(i,b[i])

while循环

#方式一:
var a=0;
while(a<10)
    console.log(a);
    a++;

#循环加条件判断
while (a<10)
    console.log(a);
    if (a===5)
        break;
     
    a++;

三元运算

var a=5;b=3;
#如果a>b的这个条件成立,就返回冒号前面的值,条件不成立就返回条件后面的值
var c=a>b ? a:b;

函数

#普通函数
//function相当于python中的def 后面写上括号,号里写函数执行的代码块
function f()
    console.log('你好')

f();//函数名加括号执行函数
#带参数的函数
function f1(a,b)
    console.log(a+b)

f1(1,6);//执行函数
#带返回值的函数
function f2(a,b)
    return a+b;
    //返回值不能有多个,写多个会返回最后一个值
    return a,b;
    //想要返回多个值,可以使用数组的方式返回值
    return [a,b]

#匿名函数
//匿名函数需要吧定义出来的这个函数赋给一个变量
var f3=function()
    console.log('123')

f3();//执行匿名函数
#自执行函数
//函数定义时直接在函数的后面加括号执行 ,就是自执行函数
(function(a,b)console.log(a+b))(1,2)

函数的全局变量和局部变量

#局部变量:
    在JavaScript函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,局部变量就会被删除
#全局变量:
    在函数外声明的变量是*全局*变量,网页上的所有脚本和函数都能访问它。
#变量的生命周期:
    //全局变量在页面关闭之后,变量消失
    //局部变量在函数运行结束之后消失

作用域

#首先会在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层
#示例1:
    var a='lijie';
    function f()
        var a='tiancai'
        function f1()
            var a='tianghang';
            console.log(a);         
        
        f1();
    
    f();//打印tianhang
#示例二:
    var city = "BeiJing";
    function Bar() 
        console.log(city);
        
    function f() 
        var city = "ShangHai";
        return Bar;
    
    var ret = f();
    ret();//beijing

闭包

#闭包和python是一样的格式
var a='lijie';
function f()
    var a='taincai';
    function f1()
        console.log(a);
    
    return f1;

var ret=f();
ret();

面向对象

#面向对象,在ES5中没有类的概念,只有个构造函数,命名的首字母要大写,实例化的时候使用new关键字进行实例化
//使用构造方法来构造一个类
function Person(name)
    this.name=name

//使用prototype原型链方法来给Person中添加一些方法,
Person.prototype.f1=function()
    console.log(this.name,'帅')

//通过new关键字来实例化一个对象
var p1 = new Person('lijie');
//所有的方法和属性都只能通过对象来调用.不能使用类名来调用
p1.name//lijie
p1.f1()//lijie 帅

Date对象

#方法一:
    var d1 = new Date();//获取当前的时间
    console.log(d1.toLocaleString());//当前时间的字符串显示
    //打印结果:2019/9/16 下午7:48:08
#方式二:
    var d = new Date('2019/9/16 19:46');//参数为日期字符串
    console.log(d.toLocaleString());
    //打印结果:2019/9/16 下午7:46:00
#方式三:
    var d3 = new Date(5000);  //参数为毫秒数(时间戳)
    console.log(d3.toLocaleString());
    console.log(d3.toUTCString());
#常用方法:
var d = new Date(); 
//getDate()                 获取日
//getDay ()                 获取星期 ,数字表示(0-6),周日数字是0
//getMonth ()               获取月(0-11,0表示1月,依次类推)
//getFullYear ()            获取完整年份
//getHours ()               获取小时
//getMinutes ()             获取分钟
//getSeconds ()             获取秒
//getMilliseconds ()        获取毫秒
//getTime ()                返回累计毫秒数(从1970/1/1午夜),时间戳

RegExp对象

#创建正则对象的方式一:
//创建RegExp对象方式(逗号后面不要加空格),假如匹配用户名是只能字母开头后面是字母加数字加下划线的5到11位的 
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]5,11$");
// 匹配响应的字符串
var s1 = "bc123";
//RegExp对象的test方法,测试一个字符串是否符合对应的正则规则,返回值是true或false。
reg1.test(s1);  // true

#简写方式
// /填写正则表达式/匹配模式(逗号后面不要加空格)
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]5,11$/;
reg2.test(s1);  //true

#坑:
    //使用reg2.text();的时候text方法里如果什么都不写,那么默认变成reg2.text('undefined'),如果undefined满足你的正则要求,返回的也是true,要注意

#string使用正则的一些方法:
var s='hello world!';

//match,查找符合正则条件内容,/o/g 后面的这个g的意思是匹配所有的,返回的是一个数组,没有null
s.match(/o/g);//结果:(2)?["o", "o"]
s.match(/o/);//结果:["o", index: 4, input: "Hello World!", groups: undefined]

//search查找字符串中符合正则表达式的内容位置,返回第一个配到的元素的索引位置加不加g效果相同,如果没有查找到匹配的元素,就返回-1;
s.search(/h/g);//结果:0;

//split按照正则表达式对字符串进行分割,得到一个新值,元数据类型不变
s.split(/l/);//结果:?["he", "", "o Wor", "d!"]

//replace按照正则表达式对字符串的元素进行替换,返回一个新值
s.replace(/l/,'j');//结果:"Hejlo World!"
s.replace(/l/g,'j');//结果:"Hejjo Worjd!"

#text注意事项:
    //在正则表达式中,如果使用加上g之后,使用text匹配时,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找
    // 该属性值默认为0,所以第一次仍然是从字符串的开头查找。
    // 当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。
    // 当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。
    // 因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。
var reg3 = /a/g;
var s1 = 'alex is a xiaosb';
reg3.lastIndex -- 0
reg3.test(s1); -- true
reg3.lastIndex -- 1
reg3.test(s1); -- true
reg3.lastIndex -- 9
reg3.test(s1); -- true
reg3.lastIndex -- 13
reg3.test(s1); -- false
//把lastIndex置为零:
    reg3.lastIndex=0;

math对象(类似内置函数)

Math.abs(x)      返回数的绝对值。
exp(x)      返回 e 的指数。//返回 e 的 x 次幂。e 代表自然对数的底数,其值近似为2.71828。
floor(x)    小数部分进行直接舍去。
log(x)      返回数的自然对数(底为e)//返回x 的自然对数,参数必须大于0
max(x,y)    返回 x 和 y 中的最高值。
min(x,y)    返回 x 和 y 中的最低值。
pow(x,y)    返回 x 的 y 次幂。
random()    返回 0 ~ 1 之间的随机数。
round(x)    把数四舍五入为最接近的整数。
sin(x)      返回数的正弦。
sqrt(x)     返回数的平方根。
tan(x)      返回角的正切。

技术图片

以上是关于javascript初识的主要内容,如果未能解决你的问题,请参考以下文章

笔记一初识 Javascript

初识JavaScript

Javascript初识

JavaScript对象及初识OOP

初识JavaScript

初识javascript