zoukankan      html  css  js  c++  java
  • 01-Javascript基础

    一. JS介绍

    JavaScript是前台语言
    JavaScript是前台语言,而不是后台语言。
    JavaScript运行在用户的终端网页上,而不是服务器上,所以我们称为“前台语言”。
    JavaScript就是一个简单的制作页面效果的语言,就是服务于页面的交互效果、美化、绚丽、不能操作数据库。
    后台语言是运行在服务器上的,比如PHP、ASP、JSP等等,这些语言都能够操作数据库,都能够对数据库进行“增删改查”操作。Node.js除外。

    JavaScript的组成
    JavaScript基础分为三个部分:
    ECMAScript:JavaScript的语法标准。包括变量、表达式、运算符、函数、if语句、for语句等。
    DOM:操作网页上的元素的API。比如让盒子移动、变色、轮播图等。
    BOM:操作浏览器部分功能的API。比如让浏览器自动滚动。
    PS:JS机械重复性的劳动几乎为0,基本都是创造性的劳动。而不像HTML、CSS中margin、padding都是机械重复劳动。

    JavaScript引入方式

    Script标签内写代码
    <script>
      // 在这里写你的JS代码
    </script>
    引入额外的JS文件
    <script type="text/jacascript" src="myscript.js"></script>

     

    JavaScript注释

    // 这是单行注释
    
    /*
    这是
    多行注释
    */

    JavaScript中的语句要以分号(;)为结束符。



    二. js基础语法

     01.变量

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

    // var 定义变量
    var a = 123;
    // 测试语句 // 弹出框 alert(a); // 控制台输出 console.log(a);

    弹出框

    控制台输出

    02. 数据类型

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

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

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

     基础数据类型
    • number
    var n1 = 123;
    //typeof 检查当前变量是什么数据类型 console.log(typeof a)
    //特殊情况 var n2 = 5/0; console.log(n2) //Infinity 无限大. number类型
    • string
    var s1  = '123';
    var s2  = "456";
    var s3 = "";      
    
    console.log(typeof s1);
    console.log(typeof s2);
    console.log(typeof s3);
    console.log(s1 + s2 + s3); //字符串拼接
    • boolan
    var b1 = false;
    var b2 = true;
    console.log(typeof b1);
    console.log(typeof b2);
    • null
    var c1 = null;  //空对象, object
    console.log(c1);
    • undefined
    var d1;
    // undefined 表示变量为定义
    console.log(typeof d1);
    引用数据类型
    // Function函数
    
    // Object 对象(相当于字典)
    
    // Array 数组(相对列表)
    
    // Date
    数据类型转换
    1.将数值类型转换成字符串类型
    隐式转换
    var n1 = 123;
    var n2 = '123';
    var n3 = n1+n2;
    // 隐式转换
    console.log(typeof n3);
    强制类型转换
    复制代码
    var n1 = 123;
    // 强制类型转换String(),toString() var str1 = String(n1); console.log(typeof str1); var num = 234; console.log(num.toString())
    复制代码
    2.将字符串类型转换成数值类型
    复制代码
    var  stringNum = '789.123wadjhkd';
    var num2 =  Number(stringNum);
    console.log(num2)
    
    // parseInt()可以解析一个字符串 并且返回一个整数
    console.log(parseInt(stringNum))
    console.log(parseFloat(stringNum));
    复制代码
    3.任何数据类型都可以转换为boolean类型
    复制代码
    var b1 = '123'; 
    var b2 = 0;
    var b3 = -123
    
    var b4 = Infinity; 
    var b5 = NaN;
    
    var b6; //undefined
    var b7 = null;
    
    // 非0既真
    console.log(Boolean(b7))

     

    03. 运算符

    1.赋值运算符

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

    2.算数运算符

    var a = 5,b=2

    3.比较运算符

    var x = 5;

    04. 流程控制

    1.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{
      //满足条件执行
    }
    复制代码
    注意:浏览器解析代码的顺序 是从上往下执行,从左往右

     

    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
    复制代码
    var gameScore = 'better';
    
    switch(gameScore){
    
    //case表示一个条件 满足这个条件就会走进来 遇到break跳出。如果某个条件中不写 break,那么直到该程序遇到下一个break停止
        case 'good':
        console.log('玩的很好')
        //break表示退出
        break;
        case  'better':
        console.log('玩的老牛逼了')
        break;
        case 'best':
        console.log('恭喜你 吃鸡成功')
        break;
    
        default:
        console.log('很遗憾')
    
    }
    复制代码

     

    4.while循环

    循环三步走:

    1.初始化循环变量

    2.判断循环条件

    3.更新循环变量

    复制代码
    var i = 1; //初始化循环变量
    
    while(i<=9){ //判断循环条件
        console.log(i);
        i = i+1; //更新循环条件
    }
    复制代码

    练习:将1-100所有是2的倍数在控制台中打印。使用while循环

     

    5.do_while
    复制代码
    //不管有没有满足while中的条件do里面的代码都会走一次
    var i = 3;//初始化循环变量
    do{
    
        console.log(i)
        i++;//更新循环条件
    
    }while (i<10) //判断循环条件
    复制代码

     

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

    课堂练习:

    复制代码
    for(var i = 1;i<=100;i++){
        if(i%2==0){
            //是偶数
            console.log(i)
        }
    }
    复制代码

    1-100之间所有数之和

    var sum = 0;
    for(var j = 1;j<=100;j++){
        sum = sum+j
    }
    console.log(sum)
    双重fo循环
    复制代码
    for(var i=1;i<=3;i++){
                
       for(var j=0;j<6;j++){
            document.write('*')
        }
                
       document.write('<br>')
     }

    05. 常用内置对象

    数组Array

    1.数组的创建方式

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

    2.数组的赋值

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

    3.数组的常用方法

    3.1 数组的合并 concat()

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

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

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

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

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

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

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

    3.5 pop 删除数组的最后一个元素并返回删除的元素

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

    3.6 push() 向数组末尾添加一个元素或多个元素,并返回新的长度

    var arr = ['张三','李四','王文','赵六'];
    var newLength= arr.push('小马哥');//可以添加多个,以逗号隔开
    console.log(newLength);//5
    console.log(arr);//["张三", "李四","王文","赵六","小马哥"]
    
    

    3.7 reverse() 翻转数组

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

    3.8 sort对数组排序

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

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

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

     3.10 shift() 删除并返回数组的第一个元素

    3.11 unshift() 向数组的开头添加一个或更多元素,并返回新的长度

     

    字符串String

    字符串方法

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

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

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

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

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

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

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

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

    4.5 slice(start,end) 提取一个字符串的一部分,并返回一新的字符串。左闭右开 分割字符串

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

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

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

    4.7 substr(start,length) 返回一个字符串中从指定位置开始到指定字符数的字符。 

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

    4.8 toLowerCase()转小写

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

    4.9 toUpperCase()转大写

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

    4.10 substring(indexStart,indexEnd) 提取字符串中介于两个指定下标之间的字符。返回的子串包括 开始 处的字符,但不包括 结束 处的字符

    • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。
    • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。
    • 如果任一参数小于 0 或为 NaN,则被当作 0。
    • 如果任一参数大于 stringName.length,则被当作 stringName.length
    • 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样

    4.11 trim() 去除字符串两边的空白

    特别:

    //1.将number类型转换成字符串类型
    var num = 132.32522;
    var numStr = num.toString()
    console.log(typeof numStr)
    //四舍五入
    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
    复制代码

     注意:以上getxxx的方法都是对时间的获取,如果要设置时间,使用setxxx,请参考链接:http://www.runoob.com/jsref/jsref-obj-date.html

    Math 内置对象

    常用内置对象

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

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

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

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

    6.3 求两个数的最大值和最小值

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

    6.4 随机数 Math.random()

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

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

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

     

    三. JS函数

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

    函数的作用:

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

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

    复制代码
      console.log("hello world");
        sayHello();     //调用函数,JS对于函数的定义和调用顺序无所谓
    //定义函数: function sayHello(){ console.log("hello"); console.log("hello world"); }
    复制代码

     

    第一步:函数的定义

    函数定义的语法:

     function 函数名字(){
    
        }

    解释如下:

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

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

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

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

     

    第二步:函数的调用

    函数调用的语法:

     函数名字();

    函数的参数:形参和实参

    函数的参数包括形参和实参

    注意:实际参数和形式参数的个数,要相同。

    例子:

    复制代码
            sum(3,4);
            sum("3",4);
            sum("Hello","World");
    
            //函数:求和
            function sum(a, b) {
                console.log(a + b);
            }
    复制代码

    函数的返回值

    例子:

    复制代码
           console.log(sum(3, 4));
    
            //函数:求和
            function sum(a, b) {
                return a + b;
            }

    函数对象,匿名函数

    var add = function(){
        console.log("hello world");
    };
    add()
    
    

    自执行函数

    (function (a,b) {
        console.log(a,b)
    })(1,2);

    构造函数, class

    // 在es5中没有class的概念,在创建对象使用 nwe 关键字,构造函数第一个字母为大写.
    function Animal(name,age) {
        // 定义属性,this 相当于 self
        this.name = name;
        this.age = age;
        // 定义方法
        this.fav = function () {
            console.log(this.name,this.age);
            return true
        }
    }
    // 实例化对象
    var obj = new Animal("熊大",18);
    // 调用方法
    ret = obj.fav();
    console.log(ret);
    console.log(obj.name);
    console.log(obj.age);
    es6(ECMAScript 6) 中定义类
    class Animal{
        constructor(name='alex',age=18){
            this.name = name;
            // console.log(name);
            this.age = age;
        }
        fav(){
            console.log(this);
        }
    
    }
    var a =  new Animal();
    a.fav()
  • 相关阅读:
    移动端web app开发备忘
    HDU 5391-Zball in Tina Town(数论)
    LeetCode:Invert Binary Tree
    Mongo集群之主从复制
    Cocos2d-x--iOS平台lua加密成luac资源方法和Jsc文件&lt;MAC平台开发试用--windows平台暂未研究&gt;
    优秀程序猿因何而优秀?
    Java Exception和Error的差别
    【Android开发】之Fragment与Acitvity通信
    Draw the RGB data from kinect C++ via opengl
    使用Opencv2遇到error C2061: 语法错误: 标识符dest
  • 原文地址:https://www.cnblogs.com/root0/p/10702434.html
Copyright © 2011-2022 走看看