JavaScript-01

EMCA(European Computer Manufacturers Association) 欧洲计算机制造商协会

EMCAScript,是JavaScript语言的标准,JavaScript可以看作是EMCAScript的实现(虽然是现有JS后有ES)

EMCA会在每年的6月份正式发布一次规范的修订,而这次的发布也将作为当年的正式版本。以后的改动基于上一版本进行修改。

  1. ES6是15年
  2. ES7是16年
  3. ES8是17年
  4. ES9是18年

新特性:

ES5:

'use strict' 严格模式 必须要使用var声明才能使用,避免创建全局变量。

forEach语法:

var a = ['A', 'B', 'C'];
a.forEach(function (element, index, array) {   //每次迭代调用此回调函数
    // element: 指向当前元素的值
    // index: 指向当前索引
    // array: 指向Array对象本身
    console.log(element + ', index = ' + index);
});

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
    console.log(element);
});

var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    console.log(value);
});

ES6:

`反引号` 多行字符串 反引号之间的内容保留原来的格式 不止是换行 包括空格呀什么的 都保留下来

`模板字符串` 

var name = '小明';
console.log(`你好 , ${name}`);

Map:

//var m = new Map();
var m = new Map([['zhangsan',22], ['lisi',23], ['wangwu',24]]); //二维数组

m.get('lisi');        //获取
m.delete('lisi');        //删除
m.has('lisi');          //是否有
m.set('lisi', 23);        //添加

Set:

//var s = new Set();
var s = new Set([1,2,2,3]);

s.add(4);        //添加
s.add(4);        //集合不重复
s.delete(4);        //删除
s.has(4);        //是否有属性

for ... of语法:Array Set Map都属于Iterable类型 可以使用for ... of语法

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x of a) {        //for of遍历的才是集合本身的元素
    console.log(x); // 'A', 'B', 'C'
}

var a = ['A', 'B', 'C'];
a.name = 'Hello';
for (var x in a) {            //for in遍历的是对象的属性 
    console.log(x); // '0', '1', '2', 'name'
}

基本数据类型

  • 10/3 = 3.3333333333333335 js的除法不是整除 所以在进行浮点数计算比较时 不能进行精确的比较。例如 1/3 === 1-2/3 返回false。 正确做法应该是 Math.abs(1/3 - (1-2/3)) < 0.0000001
  • true == 1 返回true js的==运算符会自动转换类型 我们应该坚持使用===,这是连类型一起比较的正常的等于
  • undefined表示值未定义 null表示值为空 两者是有差别的,前者是对象都不存在,后者对象是存在的,只不过赋值为null undefined仅仅在判断函数参数是否传递的情况下有用
  • 在js中 被视为false的值是 undefined, null, NaN, 0, ''。 这些值在进行逻辑运算时被视为false但是并不代表它们都==false
    undefined == false        false
    null == false             false
    NaN == false              false
    
    0 == false                true
    '' == false               true
    
    undefined && true            undefined
    null || true                 true
    '' && true                   ""
    'abc' && true                true

    可以看到只有0和空字符串可以直接==false  但是它们全部可以直接参与逻辑运算 js中的逻辑运算没有类型之分,毕竟动态语言

  • var person{
        name: '张飞',
        age: 18
        'middle-school': '38中'
    }
    
    person.name                //访问属性直接.
    person['age']              //也可以这样
    person['middle-school']    //这种非法的变量名 就必须用数组的方式
    
    delete person.name        //删除属性
    person.name = '张飞'       //添加属性
    
    'age' in person;            //'age'这个属性在person对象中存在
    'toString' in person;        //'toString' 也存在 因为toString是object的属性
    
    person.hasOwnProperty('age')  //'age' 是person自己的属性
    person.hasOwnProperty('toString')  //'toString' 不是person自己的属性

    js对象是一组键值对集合,键是string类型 值任意,事实上这就是常说的一个JSON对象。之前居然没认出来 忏愧。

  • 关于字符串的操作 js和java几乎如出一辙 indexOf charAt substring 包括字符串不能修改 唯一不同是js字符串看作是数组,下标直接访问 长度直接有属性length。

  • 数组: 用[]表示 当然也可以用new Array()创建 操作方式和python有些相似 都是动态类型嘛

    var arr = [10, 3.14, 'ab', null, true];
    
    arr.indexOf('ab');
    arr = arr.slice(0, 2);     //相当于字符串的substring
    
    arr.push(11,13,12) ;       //后面添加
    arr.pop();                 //后面删除
    arr.unshift(2.55,6);       //前面添加
    arr.shift();               //前面删除
    
    arr.splice(2,3,'a','b');   //从2开始删除3个 并从位置2插入'a','b'
    
    arr.sort();       //[10, 11, 13, 2.55, 3.14, 6]
    arr.reverse();    //反转
    
    arr.concat([1,2,3]);      //连接数组
    arr.join('-');            //把数组元素转换成字符串中间用 - 连接

     

基本语法

条件语句

if(a>=18 && a<=25){

}else if(a>25 && a<=40){

}else{

}

循环语句

var x = 1;
var i;
for(i=1; i<=10; i++){
    x *= i;
}

//for...in 遍历的是对象的属性名称 数组也是对象 索引可以看作是属性
for(var key in person){    //key是键值
    console.log(key + ':' + person[key]);
}


var a = ['A', 'B', 'C'];
for (var i in a) {
    console.log(i); // '0', '1', '2'    这里遍历输出的是字符串
    console.log(a[i]); // 'A', 'B', 'C'
}
while(x>0){
    
    x--;
}

do{

    x--;
}while(x>0)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值