JavaScript基础知识备忘

1.JavaScript严格区分大小写,如果弄错了大小写,程序将报错或者运行不正常。

2.JavaScript并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代码的引擎会自动在每个语句的结尾补上;但某些情况下会出现语义不一致的问题,建议加;

3.JavaScript不区分整数和浮点数,统一用Number表示,NaN---not a number,Infinity---无限

4.字符串是以单引号'或双引号"括起来的任意文本,比如'abc'"xyz"等等,字符串中的'和"可以用转义字符\来标识,ES6标准新增了一种多行字符串的表示方法,用反引号 ` ... ` 表示

5.建议使用===比较

==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;

===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

6.NaN的比较

NaN === NaN; // false

ES6有个工具函数是Number.isNaN()

7.JavaScript的数组可以包括任意数据类型。

[1, 2, 3.14, 'Hello', null, true];

 push()Array的末尾添加若干元素,pop()则把Array的最后一个元素删除掉并返回该元素:

8.JavaScript的对象是一组由键-值组成的无序集合,JavaScript对象的都是字符串类型,值可以是任意数据类型,JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性:

object.id=18;//增加id的属性
delete object.age;//删除属性

9.使用var申明的变量不是全局变量,它的范围被限制在该变量被申明的函数体内,在strict模式下运行的JavaScript代码,强制通过var申明变量

'use strict';

10. JavaScript的函数也是一个对象,var abs=function (x){}

11.avaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。

12.JavaScript函数允许接收任意个参数,rest参数只能写在最后,前面用...标识,传入的参数先绑定ab,多余的参数以数组形式交给变量rest,所以,不再需要arguments我们就获取了全部参数。

13.JavaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部,所以尽量把变量声明写在最前面。

14.JavaScript实际上只有一个全局作用域,全局变量会绑定到window上,不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都会造成命名冲突,减少冲突的一个方法是把自己的所有变量和函数全部绑定到一个全局变量中:

// 唯一的全局变量MYAPP:
var MYAPP = {};

// 其他变量:
MYAPP.name = 'myapp';
MYAPP.version = 1.0;

// 其他函数:
MYAPP.foo = function () {
    return 'foo';
};

许多著名的JavaScript库都是这么干的:jQuery,YUI,underscore等等。

15. ES6引入了新的关键字let,用let替代var可以申明一个块级作用域的变量,const申明一个常量,也是块级作用域

16.解构赋值

var person = {
    name: '小明',
    age: 20,
    gender: 'male',
    passport: 'G-12345678',
    school: 'No.4 middle school'
};

// 把passport属性赋值给变量id:
let {name, passport:id} = person;
name; // '小明'
id; // 'G-12345678'

17. map()方法定义在JavaScript的Array中,我们调用Arraymap()方法,传入我们自己的函数,就得到了一个新的Array作为结果

'use strict';
function pow(x) {
    return x * x;
}
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
console.log(results);

18.ES6标准新增了一种新的函数:Arrow Function(箭头函数)

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面的x=>x*x,只包含一个表达式,连{ ... }return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }return,如果参数不是一个,就需要用括号()括起来箭头函数内部的this是词法作用域,由上下文确定。this总是指向词法作用域,也就是外层调用者obj

// 两个参数:
(x, y) => x * x + y * y

// 无参数:
() => 3.14

// 可变参数:
(x, y, ...rest) => {
    var i, sum = x + y;
    for (i=0; i<rest.length; i++) {
        sum += rest[i];
    }
    return sum;
}

 

19.JSON定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号"",Object的键也必须用双引号""。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。

序列化:objectj转为JSON

var s = JSON.stringify(xiaoming);

反序列化:拿到一个JSON格式的字符串,我们直接用JSON.parse()把它变成一个JavaScript对象:

var obj=JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值