javascript语法ECMAscript

变量

  1. 变量就是装数据的容器,是在内存中申请存放数据的空间
  2. 变量的数据类型只有程序在运行过程中,根据等号右边的值来确定的。js是动态语言,变量的数据类型是可以变化的。
  3. js数据类型分为简单数据类型,字符型。布尔型。
  4. isNaN()用来判断变量是否是非数字。
  5. 字符串string单引号 ;通过length属性检测字符串长度;
  6. 变量和字符串相连引引加加
  7. boolean布尔型true1、false0,
  8. undefined未定义数据类型,null空值,NaN非数字的。
  9. 数字转换字符串①num.tostring②string(num)③num+‘’。
  10. 字符串转换为数字①parseInt②parseFloat③Number()④使用运算符减除乘等于。
  11. 转换为布尔型boolean

运算符

  1. 运算符:算数运算符、递增递减运算符、比较运算符、逻辑运算符、赋值运算符。
  2. 前置递增、先自加,后运算。后置递增先原值运算后自加。单独使用运行结果相同。
  3. 逻辑与&&and、逻辑或||or、逻辑非!not。
    4.在这里插入图片描述

流程控制

  1. 流程控制就是来控制我们代码按照什么结构来执行,分为顺序结构、分支结构、循环结构。
  2. if语句里:三元表达式由三元运算符?:组成的式子。条件表达式 ? 表达式1 : 表达式2 。 如果条件表达式结果为真则返回表达式1的值,如果是假则返回表达式2的值。
  3. 分支语句:if else语句 、switch语句(针对特定值)。
  4. 循环语句:for循环(初始化变量、条件表达式、操作表达式)
  5. while循环(条件表达式)
  6. continue退出本次循环break退出整个循环

数组

  1. 数组(Array) :就是一组数据的集合 存储在单个变量下的优雅方式 。
  2. 利用new 创建数组 var arr = new Array(); // 创建了一个空的数组
  3. 利用数组字面量创建数组 [] var arr = []; // 创建了一个空的数组 var arr1 = [1, 2, 'pink老师', true];
  4. 我们数组里面的数据一定用逗号分隔。
  5. 用索引号获取数组元素。
  6. 用for循环遍历数组。
  7. 冒泡排序:
  8. 数组的增、改、删:
var arr = [1, 3, 4, 5];
        arr.splice(1, 1);从索引为1开始删除1个,
        arr.splice(0, 2, "andy", "andi");从索引为0开始修改两个值;
         arr.splice(1, 0, 6, 7);从索引为1前面增加两个值
 // 冒泡排序
        // var arr = [5, 4, 3, 2, 1];
        var arr = [4, 1, 2, 3, 5];
        for (var i = 0; i <= arr.length - 1; i++) { // 外层循环管趟数 
            for (var j = 0; j <= arr.length - i - 1; j++) { // 里面的循环管 每一趟的交换次数
                // 内部交换2个变量的值 前一个和后面一个数组元素相比较
                if (arr[j] < arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }

            }
        }
        console.log(arr);

函数

  1. 定义:函数就是封装了一段可以被重复执行调用的代码块 目的: 就是让大量代码重复使用。
  2. 函数使用分为两步: 声明函数 和 调用函数。
  3. 在声明函数的小括号里面是 形参 (形式上的参数),在函数调用的小括号里面是实参(实际的参数。
  4. (1) 多个参数之间用逗号隔开
    (2) 形参可以看做是不用声明的变量。
  5. return 终止函数,return 后面的代码不会被执行,如果函数没有 return 则返回undefined。
  6. break ,continue ,return 的区别

  • break :结束当前的循环体(如 for、while)
  • continue :跳出本次循环,继续执行下次循环(如 for、while)
  • return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码
  1. 当不确定有多少个参数传递的时候,可以用 arguments 来获取,arguments 对象中存储了传递的所有实参。arguments展示形式是一个伪数组。
  2. arguments使用:
 function getMax() { // arguments = [1,2,3]
            var max = arguments[0];
            for (var i = 1; i < arguments.length; i++) {
                if (arguments[i] > max) {
                    max = arguments[i];
                }
            }
            return max;
        }
  1. 函数的两种声明方式:
    ①命名函数
// 声明定义方式
function fn() {...}
// 调用  
fn();  
调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面

②匿名函数(函数表达式)

// 这是函数表达式写法,匿名函数后面跟分号结束
var fn = function(){...};
// 调用的方式,函数调用必须写到函数体下面
fn();
函数调用的代码必须写到函数体后面
function fn1() {
            console.log(111);
            fn2();
            console.log('fn1');
        }

        function fn2() {
            console.log(222);
            console.log('fn2');
        }
        fn1();

作用域

  1. JavaScript作用域 : 就是代码名字(变量)在某个范围内起作用和效果 目的是为了提高程序的可靠性更重要的是减少命名冲突。
  2. 变量的作用域: 根据作用域的不同我们变量分为全局变量和局部变量。
  3. 如果在函数内部 没有声明直接赋值的变量也属于全局变量。
  4. 从执行效率来看全局变量和局部变量
    (1) 全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
    (2) 局部变量 当我们程序执行完毕就会销毁, 比较节约内存资源
  5. 预解析:
    我们js引擎运行js 分为两步: 预解析 代码执行
    (1). 预解析 js引擎会把js 里面所有的 var 还有 function 提升到当前作用域的最前面
    (2). 代码执行 按照代码书写的顺序从上往下执行
    预解析分为 变量预解析(变量提升) 和 函数预解析(函数提升)
    (1) 变量提升 就是把所有的变量声明提升到当前的作用域最前面 不提升赋值操作
    (2) 函数提升 就是把所有的函数声明提升到当前作用域的最前面 不调用函数

对象

  1. 对象是由属性和方法组成的。
  2. 使用对象字面量创建对象
var obj = {};  // 创建了一个空的对象
  var obj = {
                uname: '张三疯',
                age: 18,
                sex: '男',
                sayHi: function() {
                    console.log('hi~');

                }
            }
  1. 利用 new Object 创建对象
 var obj = new Object(); // 创建了一个空的对象
        obj.uname = '张三疯';
        obj.age = 18;
        obj.sex = '男';
        obj.sayHi = function() {
                console.log('hi~');

            }

4.构造函数泛指某一大类,对象是指具体事物。 利用构造函数创建对象,通过 new 关键字创建对象的过程我们也称为对象实例化
5. 构造函数的语法格式
function 构造函数名() {
this.属性 = 值;
this.方法 = function() {}
}
new 构造函数名();

   function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function(sang) {
                console.log(sang);

            }
        }
        var ldh = new Star('刘德华', 18, '男');
  1. 遍历对象for…in 语句用于对数组或者对象的属性进行循环操作
 for (var k in obj) {
            console.log(k); // k 变量 输出  得到的是 属性名
            console.log(obj[k]); // obj[k] 得到是 属性值

        }
        我们使用 for in 里面的变量 我们喜欢写 k  或者  key

内置对象

Math对象

1)​ Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。

属性、方法名 功能
Math.PI 圆周率
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 四舍五入版 就近取整 注意 -3.5 结果是 -3
Math.abs() 绝对值
Math.max()/Math.min() 求最大和最小值
Math.random() 获取范围在[0,1)内的随机值

​ 注意:上面的方法使用时必须带括号
2)获取指定范围内的随机整数function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }

日期对象

1)Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。Date 实例用来处理日期和时间

数组对象

1)创建数组的两种方式(1)字面量方式(2)new Array()
2) 检测是否为数组:(1)instanceof 可以判断一个对象是否是某个构造函数的实例(2)Array.isArray()用于判断一个对象是否为数组,isArray() 是 HTML5 中提供的方法
3)添加删除数组元素的方法:
(1)push () 末尾添加一个或多个元素
(2)unshift()向数组的开头添加元素
(3)pop()删除数组最后一个元素
(4)shift()删除数组的第一个元素
4)数组排序
(1)reverse()颠倒数组元素的顺序
(2)sort()对数组元素进行排序
注意:sort方法需要传入参数来设置升序、降序排序

  • 如果传入“function(a,b){ return a-b;}”,则为升序
  • 如果传入“function(a,b){ return b-a;}”,则为降序
    5) 数组索引方法
    indexOf()lastIndexOf ()如果不存在返回-1。
    6) 数组对象转换为字符串
    JSON.stringify(),JSON.parse()字符串转换为数组对象
字符串对象
  1. 字符串的不可变:当重新给字符串变量赋值的时候,变量之前保存的字符串不会被修改,依然在内存中重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变。
  2. 根据字符返回位置:index Of (‘要查找的字符’,开始的位置)如果找不到就返回-1,lastindex Of()从后往前找,只找第一个匹配的。
  3. 根据位置返回字符:char At(index)返回指定位置的字符(index字符串的索引号)使用str.charAt(0) str[index] 获取指定位置字符(html5新增) charCodeAt(index)获取指定位置字符的ASCll码
  4. 字符串的操作方法:substr(start,length)从start开始(索引号),length取的个数。
  5. replace()方法字符串.replace(被替换的字符串, 要替换为的字符串);replace() 方法用于在字符串中用一些字符替换另一些字符
  6. split ()方法可以将字符串切分为数组 字符串.split(“分割字符”)

数据类型

  1. 简单数据类型:把值复制给了另一个变量,相互不影响。
  2. 复杂数据类型: 把地址复制给了另一个变量,相互影响。
发布了53 篇原创文章 · 获赞 1 · 访问量 900

猜你喜欢

转载自blog.csdn.net/h_el_lo/article/details/104967663