ECMAScript5基础语法

 

 小马哥链接: https://www.cnblogs.com/majj/category/1223635.html

JavaScript 简介

Web前端有三层:

  • HTML:从语义的角度,描述页面结构

  • CSS:从审美的角度,描述样式(美化页面)

  • JavaScript:从交互的角度,描述行为(提升用户体验)

 

1、JavaScript 入门易学性

  • JavaScript对初学者比较友好。

  • JavaScript是有界面效果的(比如C语言只有白底黑字)。

  • JavaScript是弱变量类型的语言,变量只需要用var来声明。而Java中变量的声明,要根据变量的类型来定义。

 比如Java中需要定义如下变量:

 int a;
 float a;
 double a;
 String a;
 boolean a;

而JavaScript中,只用 var 定义一个变量:  

   var a;
  • JavaScript不用关心其他的一些事情(比如内存的释放、指针等),更关心自己的业务。

 

2、JavaScript 是前台语言

  JavaScript是前台语言,而不是后台语言。

  JavaScript运行在用户的终端网页上,而不是服务器上,所以我们称为“前台语言”。JavaScript就是一个简单的制作页面效果的语言,就是服务于页面的交互效果、美化、绚丽、不能操作数据库。

后台语言是运行在服务器上的,比如PHP、ASP、JSP等等,这些语言都能够操作数据库,都能够对数据库进行“增删改查”操作。Node.js除外。

 

3、JavaScript 的组成

  JavaScript基础分为三个部分:

  • ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。

  • DOM:操作网页上的元素的API。比如让盒子移动、变色、轮播图等。

  • BOM:操作浏览器部分功能的API。比如让浏览器自动滚动。

  PS:JS机械重复性的劳动几乎为0,基本都是创造性的劳动。而不像HTML、CSS中margin、padding都是机械重复劳动。

 

4、JavaScript 的特点

  (1)简单易用:可以使用任何文本编辑工具编写,只需要浏览器就可以执行程序。

  (2)解释执行(解释语言):事先不编译、逐行执行、无需进行严格的变量声明。

  (3)基于对象:内置大量现成对象,编写少量程序可以完成目标

 

javascript的基本语言规范

一、var 用来声明变量

   示例: 在javascript 中所有的数据类型的声明都是用 var 

   // keyi写在任何位置,但是最好是写在 body 的后面
   <script type="text/javascript">
		 var a = 2;         // 声明并赋值
		 var b;                // 只是声明变量
		 b = "world";
		 var c = '2';        //字符串
    </script> 

 

二、测试语句

1、输出

  (1)  alert()

    以弹出框的形式存在, 会弹出警告框,显示测试结果。

  (2)  console.log()

    console.log("")表示在控制台中输出。console表示“控制台”,log表示“输出”。

    控制台在Chrome浏览器的F12中。控制台是工程师、程序员调试程序的地方。程序员经常使用这条语句输出一些东西,来测试程序是否正确。

 

2、输入

    (1)prompt()语句,类似于python中的input(),是专门用来弹出能够让用户输入的对话框

  下方代码中,用户输入的内容,将被传递到变量 a 里面。 可以再控制台 console 中查看结果.

<script type="text/javascript">
        var a = prompt('今天是什么天气?');
        console.log(a);
</script>

  (2)prompt()语句中,用户不管输入什么内容,都是字符串。

    alert和prompt的区别:

alert("从前有座山");                //直接使用,不需要变量
var a = prompt("请输入一个数字");   // 必须用一个变量,来接收用户输入的值 

 

三、变量(重点)

1、直接量 数字和字符串   

  “直接量”即常量,也称为“字面量”。看见什么,它就是什么。

  简单的直接量有2种:数字、字符串。

  (1)数值的直接量的表达非常简单,写上去就行了,不需要任何的符号。例如:

alert(886);  //886是数字,所以不需要加引号。

  (2)字符串也很简单,但一定要加上引号。可以是单词、句子等。

 

2、变量的定义和赋值   

  • 定义变量:var就是一个关键字,用来定义变量。所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开。

  • 变量的赋值:等号表示赋值,将等号右边的值,赋给左边的变量。

  • 变量名:我们可以给变量任意的取名字。

 

  PS:在JavaScript中,永远都是用var来定义变量,这和C、Java等语言不同(有兴趣的同学可以看一下es6)

变量要先定义,才能使用。否则控制台会报错.

 

3、变量的命名规范    

  变量名有命名规范:只能由英语字母、数字、下划线美元符号 构成,且不能以数字开头,区分大小写.并且不能是JavaScript保留字。

  注意: 保留字

  下列的单词,叫做保留字,就是说不允许当做变量名,不用记:

abstract、booleanbytechar、class、const、debuggerdouble、enum、export、extends、final、float、goto
implements、import、int、interface、long、native、package、private、protected、public、short、static、super、synchronized、throws、transient、volatile

 

4、变量的类型  ♥♥♥

  变量里面能够存储数字、字符串等。变量会自动的根据存储内容的类型不同,来决定自己的类型。

  (1) 数值型 : number

    如果一个变量中,存放了数字,那么这个变量就是数值型的

 var a = 100;              //定义了一个变量a,并且赋值100
 console.log(typeof a);    //输出a变量的类型

  typeof()表示“获取变量的类型”,语法为:

  在JavaScript中,只要是数,就是数值型(number)的。无论整浮、浮点数(即小数)、无论大小、无论正负,都是number类型的。

  (2) 字符串型 : string 

<script type="text/javascript">
	var a = "abcde";
	var b = "路飞";
	var c = "123123";
	var d = "哈哈哈哈哈";
	var e = "";     //空字符串
	 
	console.log(typeof a);
	console.log(typeof b);
	console.log(typeof c);
	console.log(typeof d);
	console.log(typeof e);       
</script>

  (3)连字符和加号的区别

      键盘上的 + 可能是连字符,也可能是数字的加号,如下:

      如果加号两边都是数值,就是加,否则就是连字符(用来连接字符串)

    console.log("我" + "爱" + "你");   //连字符,把三个独立的汉字,连接在一起了
    console.log("我+爱+你");           //原样输出
    console.log(1+2+3);             //输出6

 

 

 5、变量值得传递(赋值)

  a=b;     把b的值赋给a,b不变。

  将等号右边的值,赋给左边的变量;等号右边的变量,值不变。

  示例:

        var a = "3";
        var b = 2;
        console.log(a-b);     结果为1   
     console.log(a+b); 结果为32

  上述代码注意:

      字符串 - 数值 = 数值,  数字的字符串在计算的过程中会自动将字符串"3"转为数字3。

      字符串+数值=字符串,数字2在与字符串相加的过程中会自动转化为字符串"2"

6、变量的格式转换

  (1)用户的输入

      prompt()就是专门用来弹出能够让用户输入的对话框。重要的是:用户不管输入什么,都是字符串。

  (2)parseInt():字符串转数字

parseInt(“5”);

  特性:

    a、带自动净化的功能;只保留字符串最开头的数字,后面的中文自动消失。例如:

console.log(parseInt("2018你真帅!!");

    b、自动带有截断小数的功能:取整,不四舍五入

var a = parseInt(5.8) + parseInt(4.7);
console.log(a);   //9
var a = parseInt(5.8 + 4.7);
 console.log(a);    //10

数据类型

  数据类型包括:基本数据类型和引用数据类型

  基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。

  当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值

一、基本数据类型

1、number

var a = 123;
//typeof 检查当前变量是什么数据类型
console.log(typeof a)
//特殊情况
var a1 = 5/0;
console.log(typeof e1) //Infinity 无限大. number类型

2、string

var str  = '123'
console.log(typeof str)

方法

说明

.length

返回长度

.trim()

移除空白

.trimLeft()

移除左边的空白

.trimRight()

移除右边的空白

.charAt(n)

返回第n个字符

.concat(value, ...)

拼接

.indexOf(substring, start)

子序列位置

.substring(from, to)

根据索引获取子序列

.slice(start, end)

切片

.toLowerCase()

小写

.toUpperCase()

大写

.split(delimiter, limit)

分割

 

3、boolean

var b1 = false;
console.log(typeof b1)

  总结:该类型区别于pyhton,true和false都是小写,""(空字符串)、0、null、undefined、NaN都是false的

4、null

var c1 = null;//空对象. object
console.log(c1)

5、undefined

var d1;
//表示变量未初始化,undefined,当函数无明确返回值时,返回的也是"undefined";
console.log(typeof d1)

 

总结:

类型返回值

  • undefined - 如果变量是 Undefined 类型的
  • boolean - 如果变量是 Boolean 类型的
  • number - 如果变量是 Number 类型的
  • string - 如果变量是 String 类型的
  • object - 如果变量是一种引用类型或 Null 类型的

 

二、引用数据类型

1、Function

2、Object

3、Array

  相当于列表和数组

var a = [123, "ABC"];
console.log(a[1]);  // 输出"ABC"

方法

说明

.length

数组的大小

.push(ele)

尾部追加元素

.pop()

获取尾部的元素

.unshift(ele)

头部插入元素

.shift()

头部移除元素

.slice(start, end)

切片

.reverse()

反转

.join(seq)

将数组元素连接成字符串

.concat(val, ...)

连接数组

.sort()

排序


4、String

5、Date

三、数据类型的转换

1、数值型转换成字符串型

  (1)隐式转换

vara=2;
varb='2';

//window相当于python中的global,全局变量
console.log(window.a);   //2

//一个数值+一个字符串浏览器会把数值类型隐式转换。
console.log(a+b);   //22

//隐式转换==》数值类型转换字符串
console.log(typeof(a+''));  //string

  (2)强制类型的转换

// 强制类型转换String()、toString()

var str1 = String(n1);
console.log(typeof str1);

var num = 234;
console.log(num.toString())

 

2、字符串转换成数值类型

  Number()、parseInt()、parseFloat()

var stringNum='789.123wadjhkd';
var num2=Number(stringNum);
console.log(num2);    //NaN  不是一个数值
console.log(typeofnum2);   //number  类型确实数值型

var s='we12';
var e=Number(s);
console.log(e);//NaN
console.log(typeof e)//number
var s='we12';
console.log(parseInt(s));        //NaN,强制转换成整数
console.log(parseFloat(s));     //NaN强制转换成浮点数

var e='34we12';
console.log(parseInt(e));  //34

 
eval(“1+1”)=2 ;
eval(“1<2”)=true;        //将字符串强制转换为表达式并返回结果  

 

3、任何数据类型都可以转换成boolean类型

  用法:Boolean()

运算符

  js中的运算符跟python中的运算符有点类似,但也有不同。所谓运算,在数学上,是一种行为,通过已知量的可能的组合,获得新的量。

一、赋值运算符

  以var x = 12,y=5来演示示例|

二、算数运算符

  var a = 5,b=2

三、比较运算符

  var x = 5

四、递增(++)、递减(--)

a=i++:

a = i

i= i+1

a=++i:

i=i+1

a=i

 

五、逻辑运算符

&& 

||  

!    

六、特殊情况

1、字符串的拼接

  (1)......+"   "+........

var  firstName  = '小';
var lastName = '马哥';
var name = '伊拉克';
var am = '美军';
// 字符串拼接
var str = "2003年3月20日,"+name+"战争爆发,以美军为主的联合部队仅用20多天就击溃了萨达姆的军队。这是继十多年前的海湾战争后,"+am+"又一次取得的大规模压倒性军事胜利。"
var fullStr = str;
console.log(fullStr)

var fullName = firstName +" "+ lastName;  //拼接
console.log(fullName)

 

  (2)`........${   }........`

var name = "伊拉克";
var str = `2003年3月20日,${name}战争爆发,以${am}为主的联合部队仅用
20多天就击溃了萨达姆的军队。这是继十多年前的海湾战争后,美军又一次取得的大规模压倒性军事胜利。`; console.log(str);

 

2、字符串的运算

  字符串不能进行 + 运算,可以进行 - 运算

  + 运算会拼接

vara1='1';
vara2='2';
console.log(a1-a2);   //-1
console.log(a1+a2);   //12 
varb1='one';
varb2='two'; 

//NaN.====notanumber是number类型

console.log(b1*b2);   //NaN
console.log(typeof(b1*b2)); //number 

流程控制

一、if、if - else、if - else  if - else

var ji  = 20;
if(ji >= 20){
    console.log('恭喜你,吃鸡成功,大吉大利')
}
alert('alex');//下面的代码还会执行
var ji  = 20;
if(ji>=20){
    console.log('恭喜你,吃鸡成功,大吉大利')
}else{
    console.log('很遗憾 下次继续努力')

}
if (true) {
   //执行操作
}else if(true){
    //满足条件执行            
}else if(true){
   //满足条件执行        
}else{
  //满足条件执行
}

  注意:浏览器解析代码的顺序 是从上往下执行,从左往右

二、逻辑与 &&、逻辑或 ||

//1.模拟  如果总分 >400 并且数学成绩 >89分 被清华大学录入
//逻辑与&& 两个条件都成立的时候 才成立
if(sum>400 && math>90){
    console.log('清华大学录入成功')
}else{
    alert('高考失利')
}
//2.模拟 如果总分>400 或者你英语大于85 被复旦大学录入
//逻辑或  只有有一个条件成立的时候 才成立
if(sum>500 || english>85){
    alert('被复旦大学录入')
}else{
    alert('高考又失利了')
}

三、switch语句

var gameScore = 'better';

switch(gameScore){

//case表示一个条件 满足这个条件就会走进来 遇到break跳出。break终止循环。如果某个条件中不写 break,那么直到该程序遇到下一个break停止
    case 'good':
    console.log('玩的很好')
    //break表示退出
    break;
    case  'better':
    console.log('玩的老牛逼了')
    break;
    case 'best':
    console.log('恭喜你 吃鸡成功')
    break;

    default:
    console.log('很遗憾')

}

四、while循环

  循环三步走:

    1.初始化循环变量

    2.判断循环条件

    3.更新循环变量

var i = 1; //初始化循环变量

while(i<=9){ //判断循环条件
    console.log(i);
    i = i+1; //更新循环条件
}

五、do   while

//不管有没有满足while中的条件do里面的代码都会走一次
var i = 3;//初始化循环变量
do{

    console.log(i)
    i++;//更新循环条件

}while (i<10) //判断循环条件

六、for循环

for(var i = 1;i<=10;i++){
     console.log(i)
 }

七、双重for循环

for(var i=1;i<=3;i++){
            
   for(var j=0;j<6;j++){
        document.write('*')
    }
            
   document.write('<br>')
 } 

小练习:

(1)在浏览器中输出直角三角形

                *  
                ** 
                ***
                ****
                *****
                ******        
样式
for(var i=1;i<=6;i++){
   for(var j=1;j<=i;j++){
        document.write("*");
   }
                
     document.write('<br>');
}
代码

 (2)在浏览器中输出等腰三角形

           *  
         ***  
        ***** 
       ******* 
      ********* 
     ***********
样式
for(var i=1;i<=6;i++){ //行数
                
                //控制我们的空格数
                for(var s=i;s<6;s++){
                    document.write('&nbsp;')
                }
            

                for(var j=1;j<=2*i-1;j++){
                    document.write('*')
                }
                document.write('<br>')
                
            }
代码

 

常用的内置对象

  所谓内置对象就是ECMAScript提供出来的一些对象,我们知道对象都是有相应的属性和方法

一、数组 Array

1、数组的创建方式

  • 字面量方式创建(推荐大家使用这种方式,简单粗暴)
var colors = ['red','color','yellow'];
  • 使用构造函数的方式创建 使用new关键词对构造函数进行创建对象
var colors2 = new Array();

 

2、数组的赋值

var arr = [];
//通过下标进行一一赋值
arr[0] = 123;
arr[1] = '哈哈哈';
arr[2] = '嘿嘿嘿'

 

3、数组的常用方法

  (1)数组的合并 concat()

var north = ['北京','山东','天津'];
var south = ['东莞','深圳','上海'];
        
var newCity = north.concat(south);
console.log(newCity)

   (2) join() 将数组中的元素使用指定的字符串连接起来,它会形成一个新的字符串

var score = [98,78,76,100,0];
var str = score.join('|');
console.log(str);      //   98|78|76|100|0

   (3)将数组转换成字符串 toString()

var score = [98,78,76,100,0];
//toString() 直接转换为字符串  每个元素之间使用逗号隔开
           
var str = score.toString();
console.log(str);    //98,78,76,100,0

   (4)slice(start,end); 返回数组的一段,左闭右开

var arr = ['张三','李四','王文','赵六'];
var newArr  = arr.slice(1,3);
console.log(newArr);//["李四", "王文"]

  (5)pop 移除数组的最后一个元素

var arr = ['张三','李四','王文','赵六'];
var newArr  = arr.pop();
console.log(newArr);//["张三", "李四","王文"]

  (6)push() 向数组最后添加一个元素

var arr = ['张三','李四','王文','赵六'];
var newArr  = arr.push('小马哥');
console.log(newArr);//["张三", "李四","王文","赵六","小马哥"]

  (7)reverse() 翻转数组

var names = ['alex','xiaoma','tanhuang','angle'];
       
//4.反转数组
names.reverse();
console.log(names);

  (8)sort 对数组排序

var names = ['alex','xiaoma','tanhuang','abngel'];
names.sort();
console.log(names);// ["alex", "angle", "tanhuang", "xiaoma"]

  (9)判断是否为数组:isArray()

布尔类型值 = Array.isArray(被检测的值) ;

 

二、字符串 string

  字符串的方法

1、chartAt() 返回指定索引的位置的字符

var str = 'alex';
var charset = str.charAt(1);
console.log(charset);   //l

 

2、concat 返回字符串值,表示两个或多个字符串的拼接

var str1 = 'al';
var str2  = 'ex';
console.log(str1.concat(str2,str2));//alexex

 

3、replace(a,b) 将字符串a替换成字符串b

var a = '1234567755';
var newStr = a.replace("4567","****");
console.log(newStr);//123****755

 

4、indexof() 查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。跟seach()方法用法一样

var str = 'alex';
console.log(str.indexOf('e'));//2
console.log(str.indexOf('p'));//-1

 

5、slice(start,end) 左闭右开 分割字符串

var str = '小马哥';
console.log(str.slice(1,2));//

 

6、split('a',1) 以字符串a分割字符串,并返回新的数组。如果第二个参数没写,表示返回整个数组,如果定义了个数,则返回数组的最大长度

var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
console.log(str.split('a'));//["我的天呢,", "是嘛,你在说什么呢?", "哈哈哈"]

 

7、substr(statr,end) 左闭右开

var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
console.log(str.substr(0,4));//我的天呢

 

8、toLowerCase() 转小写

var str = 'XIAOMAGE';
console.log(str.toLowerCase());//xiaomage

 

9、toUpperCase() 转大写

var str = 'xiaomage';
console.log(str.toUpperCase());

  特别:

//1、将number类型转换成字符串类型
var num = 132.32522;
var numStr = num.toString()
console.log(typeof numStr)
//2、四舍五入
var newNum = num.toFixed(2)
console.log(newNum)

 

三、Date 日期对象

  创建日期对象只有构造函数一种方式,使用new关键字

//创建了一个date对象
var myDate = new Date();

   方法:

//创建日期对象
var myDate=new Date();
        
//获取一个月中的某一天
console.log(myDate.getDate());

//返回本地时间
console.log(myDate().toLocalString());//2018/5/27 下午10:36:23

 

 四、Math 内置对象

 

1、Math.ceil() 向上取整,'天花板函数'

var x = 1.234;
//天花板函数  表示大于等于 x,并且与它最接近的整数是2
var a = Math.ceil(x);
console.log(a);//2

 

 2、Math.floor 向下取整,'地板函数'

var x = 1.234;
// 小于等于 x,并且与它最接近的整数 1
var b = Math.floor(x);
console.log(b);//1

 

 3、求两个数的最大值和最小值

//求 两个数的最大值 最小值
console.log(Math.max(2,5));//5
console.log(Math.min(2,5));//2

 

4、随机数 Math.random()

var ran = Math.random();
console.log(ran);[0,1)

  如果让你取100-200之间的随机数,怎么做?

  背过公式:min - max之间的随机数: min+Math.random()*(max-min)

 

函数

函数就是将一些语句进行封装,然后通过调用的形式,执行这些语句。

1、函数的作用

  将大量重复的语句写在函数里,以后需要这些语句的时候,可以直接调用函数,避免重复劳动。

  简化编程,让编程模块化。

2、函数的定义

 function 函数名字(){

    }
  • function:是一个关键字。中文是“函数”、“功能”。

  • 函数名字:命名规定和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头。

  • 参数:后面有一对小括号,里面是放参数用的。

  • 大括号里面,是这个函数的语句。

3、函数的调用

函数名字();

4、函数的形参和实参

  形参和实参的个数要相同

sum(3,4);
sum("3",4);
sum("Hello","World");

//函数:求和
function sum(a, b) {
   console.log(a + b);
}

5、函数的返回值

console.log(sum(3, 4));

//函数:求和
function sum(a, b) {
   return a + b;
}

 

伪数组 arguments

arguments代表的是实参。有个讲究的地方是:arguments只在函数中使用

(1)返回函数实参的个数:arguments.length

    fn(2,4);
    fn(2,4,6);
    fn(2,4,6,8);

    function fn(a,b,c) {
        console.log(arguments);
        console.log(fn.length);         //获取形参的个数
        console.log(arguments.length);  //获取实参的个数

        console.log("----------------");
    }

 结果: 

(2)之所以说arguments是伪数组,是因为:arguments可以修改元素,但不能改变数组的长短。举例:

    fn(2,4);
    fn(2,4,6);
    fn(2,4,6,8);

    function fn(a,b) {
        arguments[0] = 99;  //将实参的第一个数改为99
        arguments.push(8);  //此方法不通过,因为无法增加元素
    }

   清空数组的几种方式:

   var array = [1,2,3,4,5,6];

    array.splice(0);      //方式1:删除数组中所有项目
    array.length = 0;     //方式1:length属性可以赋值,在其它语言中length是只读
    array = [];           //方式3:推荐
posted @ 2018-09-25 09:50  葡萄想柠檬  Views(1772)  Comments(0)    收藏  举报
目录代码