前端-javascript-ECMAScript5.0

-前端常用开发工具:sublime、visual Studio Code、HBuilder、Webstorm。

使用的PCharm跟WebStorm是JetBrains公司推出的编辑工具,开发阶段建议使用。

1、JS的引入方式

如需在 HTML 页面中插入 JavaScript,请使用 <script> 标签。

<script> 和 </script> 会告诉 JavaScript 在何处开始和结束。

<script> 和 </script> 之间的代码行包含了 JavaScript:

---------

2、变量的使用

定义变量:var就是一个关键字,用来定义变量。所谓关键字,就是有特殊功能的小词语。关键字后面一定要有空格隔开。
变量的赋值:等号表示赋值,将等号右边的值,赋给左边的变量。
变量名:我们可以给变量任意的取名字。
变量要先定义,才能使用。比如,我们不设置变量,直接输出:

--------------------------

直接定义变量+赋值

变量的命名规范

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

下列的单词叫做保留字,就是说不允许当做变量名,不用记:
bstract、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

3、js基本的数据类型

 <script type="text/javascript">
        // js 基本的数据类型
        // 1.number 2.string 3.boolean 4.null 5.undefined
     
1.number var $
=100; console.log($); // typeof 变量名 console.log(typeof $); var b=5/0; console.log(b); console.log(typeof b);//infinity 无限大 //number类型 //2.string var a='alex'; // 单引号 和 双引号 都可以表示字符串 console.log(typeof a); var b=''; console.log(typeof b); // + 可能是连字符 也可以是数字的加号 // 字符串 + 数值 相当于字符串的拼接 console.log('a'+'b'+1); // 数字和数字相加 是加号 表示运算 console.log(1+2+3); // 小技巧 将数值类型转换成字符串类型 var c=10+''; console.log(typeof c);//string类型 // 3.boolean 布尔 var isShow=false; console.log(typeof isShow); // 4.null 空对象 var d=null; console.log(typeof d);
// 5. undefined 未定义的 var e; console.log(e);//值 是undefined console.log(typeof e); //undefined 数据类型 // 复杂(引用)的数据类型 /* Function def Object dict Arrary list String string Date time模块 后面课程讲解 */ </script>

4、js里面的运算符

---------------------------------------------

----------------------------------------------

-----------------------------------------------------------------

==和===的区别

-------------------------------------------------

-----------------------------------------------

js中 !==和 !=的区别

!= 在表达式两边的数据类型不一致时,会隐式转换为相同数据类型,然后对值进行比较.
!== 不会进行类型转换,在比较时除了对值进行比较以外,还比较两边的数据类型, 它是恒等运算符===的非形式.

------------------------------------------------

数据类型转换

-------------------------------------------------------------

--------------------------------------------------------------------

-----------------------------------------------------------------

流程控制

1、if语句 不同之处在于 if ;else if;else

 <script type="text/javascript">
        // if 语句 if;else if;else//if else
        var age=20;
        // {}作为当前的作用域
        if(age>18){
            console.log('可以去会所了')
        }
        else {
            console.log('好好学前端')
        }
        console.log(222222)
        if(age==18){
            console.log('age=18')
        }
        else if(age==20){
            console.log('age=20')
        }
        else {
            console.log('age is beauty')
        }

    </script>
if语句的代码

--------------------------------------------------------------------------------------------------------------------------

2、逻辑与&&、 逻辑或||

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

3、switch语句

------------------------------------------

--------------------------------------------------------

4、while循环(先判断后执行)、do while循环(先执行后判断)

给大家总结了循环三步走,任何语言的循环离不开这三步:

初始化循环变量
判断循环条件
更新循环变量

--------------------------------

 <script type="text/javascript">
        //打印1-10之间的数
        var x=0;
        while (x<10){
            ++x;
            console.log(x)
        }
        //将1~100所有是2的倍数在控制台打印。
        var i=1;
        while (i<=100){
            if(i%2==0){
                console.log(i)
            }
            i=i+1;
        }
        
    </script>
whlie循环

------------------------------------------------------------

---------------------------------------------------------------------------

5、for循环、双层for循环

100以内的素数

-------------------------------------------------------

 <script type="text/javascript">
        // for 循环遍历列表 是最常用的对数据的操作,js使用for的方式
        // 输出1-100
        for(var i =0;i<=100;i++){
            console.log(i)
        }
       // 输出1-100之间所有数之和
        var sum=0;
        for(var j=1;j<=100;j++){
            sum=sum+j;
        }
        console.log(sum);
        // 输出1-100偶数
        for(var i=1;i<=100;i++){
            if(i%2==0){
                console.log(i)
            }
        }
        // 输出1-100之间的素数(质数(又称为素数)) , “1”不算作素数

双层for循环

   // document.write 往页面上写内容
        // document.write('<h1>alex</h1>');
        document.write('111111');
        document.write('<h1>alex</h1>');
        for(var i=0;i<3;i++){//控制着你的行数
            for(var j=0;j<3;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++){ //控制行数,一共显示6行 记得换行document.write('<br>');

        //控制我们的空格数
        for(var s=i;s<6;s++){
            document.write('&nbsp;');
        }
        //控制每行的输出*for(var j=1;j<=2*i-1;j++){
            document.write('*');
        }
        document.write('<br>');

   }
for、双层for

------重点来啦----常用内置对象(复杂数据类型)

1、数组-----对于python列表

 字面量方式创建(推荐大家使用这种方式,简单粗暴)

var colors = ['red','green','yellow'];

使用构造函数(后面会讲)的方式创建 使用new关键词对构造函数进行创建对象,构造函数与后面的面向对象有关系

var colors = new Array();
//通过下标进行赋值
colors[0] = 'red';
colors[1] = 'green';
colors[2] = 'yellow';
console.log(colors);

 --------------------------------------

 

------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------

 2、数组的常用方法

 

-------------------------------------------------------------------------

---------------------------------------------------------

 <script type="text/javascript">

        // 1.数组的合并
        var north=['北京','山东','吉林'];
        var south=['深圳','广州','佛山'];
        var newCity=north.concat(south);
        console.log(newCity);

        // 2.join 将数组中元素使用指定的字符串连接起来,会返回新的字符串
        var score=[12,1,2,3,4];
        var str=score.join('$');
        console.log(str);

        // 3.slice(start,end)相当于切片功能,顾头不顾尾
        var arr=['北京','山东','吉林','深圳','广州','佛山'];
        var newarr=arr.slice(0,3);
        console.log(newarr);

        // 4.pop移除数组的最后一个元素
        var arr2=['北京','山东','吉林','深圳','广州','佛山'];
        var newarr2=arr2.pop();//移除最后一个并返回
        console.log(arr2);//["北京", "山东", "吉林", "深圳", "广州"]
        console.log(newarr2);// '佛山'
        // var newarr3=arr3.pop(1);和python 列表不同的是指定索引没有,还是移除最后一个元素

        // 5.push() 向数组最后添加一个元素
        var arr3=['北京','山东','吉林','深圳','广州','佛山'];
        arr3.push('武汉');
        console.log(arr3);// ["北京", "山东", "吉林", "深圳", "广州", "佛山", "武汉"]

        //  6.reverse 翻转数组
        var arr4=['北京','山东','吉林','深圳','广州','佛山'];
        var newarr4=arr4.reverse();
        console.log(newarr4);

        // 7 sort 对数组排序
        var arr5=['1北京','4山东','6吉林','2深圳','0广州','7佛山'];
        var newarr5=arr5.sort();
        console.log(newarr5);

        // isArray() 判断是否为数组  返回为ture|false
        var a=1;
        var iArry=a.isArray;
        if(iArry){
            console.log('是数组')
        }
        else {
            console.log('不是数组')
        }

         // 补充:
    // forEach(fn)==回调函数  匿名函数  通过forEach遍历数组的每一项内容

    // 回调函数中的参数 第一个参数为item (每一项内容) 第二个参数 是数组的索引

        arr5.forEach(function(item,index){
        console.log(item);
        console.log(index);
        })

    </script>
常用数组方法

-------------

-------------------------------------------------------

 3、字符串string

------------------------------------------------------------------------------------------------------------------------------------------------------

 

---------------------------------------------------------------------------

<script TYPE="text/javascript">
        //1 创建方式
        var str= new String();
        console.log(str);

        // 2 charAt()返回指定位置的字符
        var str0='alex';
        var charset=str0.charAt(1);
        console.log(charset);

        // 3 concat()返回字符串值,表示两个或多个字符串拼接
        var str1='good';
        var str2='boy';
        console.log(str1.concat(str2));
        console.log(str1.concat(str1,str2));
        console.log(str1.concat(str1,'---',str2));

        // 4 replace(a,b) 将字符串a替换成字符串b
        var a='12345678';
        var newStr=a.replace('345','***');
        console.log(newStr);

        // 5 indexof() 查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。跟seach()方法用法一样
        var str='good';
        console.log(str.indexOf('g'));
        console.log(str.indexOf('o'));
        console.log(str.indexOf('h'));

        // 6 slice切片(start end)左闭右开,分割字符串
        var str='小马哥的必杀技';
        console.log(str.slice(1,3));

        // 7 split('a',1) 以指定的字符串进行分割,并返回新的数组。
        // 如果第二个参数没写,表示返回整个数组,
        // 如果定义了个数,则返回数组的索引个数
        var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
        console.log(str.split('a'));//["我的天呢,", "是嘛,你在说什么呢?", "哈哈哈"]
        console.log(str.split('a',1));//["我的天呢,"]
        console.log(str.split('a',2));//["我的天呢,", "是嘛,你在说什么呢?"]

        // 8 substr(start,end)左闭右开
        var str='我是歌手第一季';
        console.log(str.substr(0,4));
        // 9 toLowerCase()转小写
        var str='XIAOMI';
        console.log(str.toLowerCase());

        // 10 toUpperCase()转大写
        var str='xiaoMI';
        console.log(str.toUpperCase());

        // 特别:
        //1.将number类型转换成字符串类型
        var num = 132.32522;
        var numStr = num.toString();
        console.log(typeof numStr);

        //四舍五入
        var newNum = num.toFixed(2);//代表小数点后保留的位数
        console.log(newNum);

        // 只能清楚首位的 空格和换行符,
        var str='   
   迭代  good   
';
        console.log(str.trim())//迭代  good

    </script>

4、Math内置对象

---------------------------------------------------------------------------------------------------------------------------------------------------

ceil  /siːl/ vt. 装天花板;装船内格子板

 <script type="text/javascript">
        // Math
        // 1. Math.ceil() 向上取整 天花板函数
        var x = 1.234;
        //天花板函数  表示大于等于 x,并且与它最接近的整数是2
        var a = Math.ceil(x);
        console.log(a);//2

        // 2 Math.floor()向下取整,地板函数
        console.log(Math.floor(x))//1

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

        //随机数 Math.random()
        console.log(Math.random());// [0,1)

        // 需求 200-500
        // 总结:背过公式:min - max之间的随机数: min+Math.random()*(max-min);
        console.log(200+Math.random()*(500-200));
    </script>

5、函数的使用

解释如下:

function:是一个关键字。中文是“函数”、“功能”。
函数名字:命名规定和变量的命名规定一样。只能是字母、数字、下划线、美元符号,不能以数字开头。 参数:后面有一对小括号,里面是放参数用的。 大括号里面,是这个函数的语句。

-----------------------------------

减少重复代码
使程序变的可扩展
使程序变得易维护
 // 函数: 就是将一些语句进行封装,然后通过调用的形式,执行这些语句
        // 函数的作用:  解决大量的重复性的语句  简化编程 让编程模块化

        // python里面的函数
       /*
       * def add(x,y):
       *    return x+y
       * print(add(1,2))
       * */

       // js中 声明函数 function
        // 1 普通函数
        function add(x,y) {
            return x+y;

        }
        alert(add(12,3));

        // 2 函数对象
        var add2=function (x,y) {
            return x+y;
        };

        console.log(typeof add2);
        console.log(add2(1,2));


    </script>

6、JavaScript的面向对象

js有7种方式创建对象

记住字面量和第4种原型模式创建对象

1.使用Object或对象字面量创建对象

2.工厂模式创建对象

3.构造函数模式创建对象

4.原型模式创建对象
 // <!-- js中创建对象的方式跟 很多语言不同  class -->
        // 1.使用Object或对象字面量创建对象
        var person=new Object();
        console.log(person);
        console.log(typeof person);
        // 给对象赋值,方法一
        person.name='fore';
        person.age=20;
        console.log(person);
        
        // 赋值方法二 字面量创建对象
        var person2={
            name:'sss',
            age:20
        };
        console.log(person2);

        // this ------> self
        var favfn=function () {
            alert(this)
        };
        var person3={
            fav:favfn
        };
        console.log(person3);

        // 提问: 能不能像工厂车间一样,车床 不断生产对象  ? 工厂模式创建对象
        // 2.工厂模式创建对象
        function createPerson(name,age) {
            var o =new Object();
            o.name=name;
            o.age=age;
            return o;
        }
        var person1=createPerson('alex',20);
        var person2=createPerson('alex2',20);
        var person3=createPerson('alex3',20);
        // instanceof 我们用instanceof操作符去检测类型
        console.log(person1 instanceof Object);

       function createfrui(color,name) {
           var o = new Object();
           o.color = color;
           o.name = name;
           return o;
       }
       var f=createfrui('yellow','banana');
       console.log(f instanceof Object);

       // 构造函数模式创建对象  构造函数可以创建对象  使用new 关键字来创建对象   函数名首字母大写
        // new Array()
       // new Object()
       // new String()

        function People(name,age) {
            this.name=name;
            this.age=age;
            this.alertName=function () {
                alert(this.name)//alter 输出到页面
            }
        }
        var p1=new People('aaa',12);
        p1.alertName();

          // 4.原型模式创建对象 propotype  它是当前对象的父类
        function Person(name,age) {
            this.name=name;
            this.age=age;

        }
        Person.prototype.alertName=function () {
            alert(this.name)
        };
        var p1=new People('egon',12);

    </script>

7、伪数组 arguments

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

 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;     //方式2:length属性可以赋值,在其它语言中length是只读
    array = [];           //方式3:推荐

-------------------------------------------------------------
for(var i =0; i < arguments.length; i ++){
                console.log(arguments[i]);
            }

8、Date日期对象

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

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

-------------------------

------------------------------------------------------------------------

 <script type="text/javascript">
        var myDate=new Date();
        console.log(myDate)
        // 获取本地时间,月份中的第几天
        console.log(myDate.getDate());
        // // getMonth()  获取指定日期对象月份(0~11// 要获取当前月份纪要加1
        console.log(myDate.getMonth()+1);
        //  返回四位数的年份
        console.log(myDate.getFullYear());
        // 0 代指的是星期天
        // getDay() 返回一星期中星期几   0~6
        console.log(myDate.getDay());
        ////getMinutes() getSecond()
        console.log(myDate.getHours());
        //// 返回本地时间
        console.log(myDate.toLocaleString());
        console.log(myDate.toLocaleTimeString());
        console.log(myDate.toDateString());

    </script>

9、JSON在JSON中,有两种结构:对象和数组。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。

同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

-------------------------------------------------------------------------------

  <script type="text/javascript">
        // 有两种结构 对象和数组
        // 1.对象
        var packJSON={
            'name':"alex",
            'age':'12'
            };
            console.log(packJSON);

        // 2.数组  是值的有序集合
        var packJSON = [{"name":"alex","pwd":123},{"name":"wusir","pwd":123}];
        console.log(packJSON);

        // json对象和json字符串转换
        // 在数据传输过程中,JSON通常是以字符串的形式传递,
        // 但是js更喜欢操作JSON对象,所以Jjson对象和json字符串转换非常重要
        var jsonStr='{"name":"alex","pwd":123}';
        // (1)json字符串=》json
        var jsonObject=JSON.parse(jsonStr);
        console.log(jsonObject);

        // JSON对象转化JSON字符串
        var str2=JSON.stringify(jsonObject);
        console.log(str2);
        console.log(typeof str2);

        // 3.遍历JSON对象和JSON数组

        // (1)遍历JSON对象
        var packJSON = {"name":"alex","pwd":123};
        for(var k in packJSON){
            console.log(k+' '+packJSON[k])
        }

        // (2) 遍历JSON数组
        var packJSON = [{"name":"alex","pwd":123},{"name":"wusir","pwd":123}];

        for(var i in packJSON){
            console.log(i+'  ' + packJSON[i].name + ' ' + packJSON[i].pwd );

        }


    </script>
原文地址:https://www.cnblogs.com/foremostxl/p/9859257.html