JavaScript |(一)基础

霸气de小男生 提交于 2019-11-28 05:37:15

概述

  • 运行在浏览器的解释性的语言。
  • 在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。
  • 被认为是玩具语言,不被大众所接受,但是写出高质量的代码很难。
  • ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。
      

基本数据类型

Number

下面是三种不太常用的数字类型。

1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

  

null和undefined

差别不大,前者表示一个空值,后者表示未定义。undefined仅仅在判断函数参数是否传递的情况下有用。
  

数组

下面是一种不常用的创建方式。

const a = new Array(1, 2, 3); // [1, 2, 3]
const b = new Array(3); // [empty X 3], 每一个是undefined

请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化。

const a = [1, 2, 3];
a[5] = 6;
a // [1, 2, 3, undefined, undefined, 6]

常用方法
slice:相当于字符串的substring,如果不给slice()传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array。

const a = [1, 2, 3]; // [1, 2, 3];
const b = a.slice(); // [1, 2, 3];
a === b // false;

push:可以向行尾不止添加一个元素。

const a = [1, 2];
a.push(2, 3); // [1, 2, 2, 3]

unshift:向行首添加元素。

const a = [1, 2];
a.unshift(4, 5); // [4, 5, 1, 2]

shfit:删除数组的第一个元素,如果为空数组,不会报错,会返回undefined。pop也是同样的道理。

const a = [1];
a.shift(); // 1
a.shift(); //undefined
a // []

splice:可以从指定的位置添加和删除元素。

const a = [1, 2, 3]
a.splice(1, 0, 3, 4); // [1, 3, 4, 2, 3]
a.splice(1, 1); // [1, 3]
a.splice(1, 1, 3, 4); // [1, 3, 4, 3]

concat:连接两个数组,或者把元素加入数组。

const a = [1, 2, 3];
const b = ['a', 'b'];
a.concat(b, 'c', 'd'); // [1, 2, 3, 'a', 'b', 'c', 'd']

  

字符串

转义符号可以转义很多的字符。

'\x41' // 'A'
'\u4e2d\u6587' // '中文'

常用方法
substring
  

对象

  • 属性的定义和访问:如果属性有特殊字符,需要用字符串的形式定义,[]的形式访问。
const obj = {
  'student-type': 'primary'
}
obj['student-type'] // primary
  • 可以动态添加和删除属性。
const obj = {};
obj.name = 'jim'; // {name: 'jim'}
delete obj.name // {}
  • 可以通过in或者hasOwnProperty来判断是否拥有某个属性,但是前者包含继承的属性。
const obj = {
  name: 'jim'
}
'name' in obj // true
'toString' in obj // true
obj.hasOwnProperty('name'); // true
obj.hasOwnProperty('toString') // false

  

比较运算符

有两点需要注意。

  • 始终坚持用===, 而不用==,前者会转换数据类型再比较,可能出现比较诡异的结果。
  • NaN和任何其它任何数都不相等,包括它自己。
NaN === NaN // false
isNaN(NaN) // true

  

控制流

条件判断

没啥需要特别说明的,就是一定要加{}
  

循环

for...in...:可以循环出对象的属性,注意这样循环出的数组的属性是字符串而不是数字。

const arr = [1, 2];
for(let props in arr){
 console.log(props, typeof props, arr[props]);
}
// 0 string 1
// 1 string 2
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!