Javascript 复习笔记(一)

2017-12-11  本文已影响0人  北冢

内置数据类型

1. Number

// % 是求余运算符
var a = 1024 ;
var a = 3.1415926 ;

2. String

var a = 'test_string' ;
var b = "test_string2" ;
`这是一个
多行
字符串`

模版字符串

var name = 'jessun' ;
var age = 27 ;
var message = `你好,${name}, 你今年${age}岁了。` ;

操作字符串

var s = 'hello, world!' ;
s.length ;

3. Boolean

true 或者 false

2 > 1 ; // �这是一个 ture

&& 是与运算符, || 是或运算符, ! 是非运算符

true && true || false  // 结果为 true
true || false          // 结果为 true
!true                  // 结果为 �false
!(2>5)                 // 结果为 ture

4. NaN

这是个特殊的量,与其他�所有值不想等,包括它自己:

NaN === NaN ;  // �结果为 false
isNaN(NaN) ;   // 结果为 true

5. null 和 undefined

null 表示一个“空”的值,相当于�� python 中的 None

undefined 表示“未定义”,如果一个函数没有 return,�调用返回值的时候��,会返回 undefined

6. 数组(Array)

类似 python 下的列表

var arr = [1, 2, 3, 4, 'hello'] ;
var arr = new Array(1, 2, 3, ,4, 'hello') ;

类似 python,可以是用索引访问

var arr = [1, 2, 3, 4, 5] ;
arr[0] ; // 返回数值1
arr[5] ; // 返回 undefinded

7. Map

ES6 新加入的数据类型,一组键值对的结构,具有极快的查找速度。无论多大,查找速度都不会变慢。

var m = new Map([['Jason', '90'], ['Kristen', '91'], ['Clair', '92']]) ;
m.get('Jason') ; // return 90

初始化 Map 需要一个�二维数组。

var m = new Map() ;
m.set('Jessun', 1) ;
m.set('Bob', 2) ;
m.has('Jessun') ; // return true
m.get('Bob') ; // return 2

m.delete('Bob') ;
m.get('Bob') ; // return undefined

8. Set

Set 中的 key 不能重复。

var s1 = new Set() ;
var s2 = new Set([1, 2, 3, 3]) ;
s2 ; // Set {1, 2, 3}
s2.add(4)
s2 ; // Set {1, 2, 3, 4}

9. iterable �对象

Array、Map 和 Set 都属于 iterable 对象,可以使用for...of来遍历。

10. 对象(Object)

无序键值对。

var person = {
  name: 'jessun',
  age: 27,
  tags: ['js', 'python', 'developer'],
  city: 'Shanghai',
  hasCar: false,
} ;

判断属性存在

`name` in person ; // return true
`toString` in person ; // return true
// 但是�继承而来的属性也会返回为 true

person.hasOwnProperty('name') ; // return true
person.hasOwnProperty('toString') ; // return false

基本语法

1. 赋值语句:

/* 这是注释。
另外,语句结尾需要加上分号。*/
var x = 1 ;

2. 判断语句:

// 这是一个多条件的判断
if (2 > 1){
  ...
} else if (2 = 1) {
} else {
  ...
} ;

3. 比较运算符

2 > 5 ;  // 结果为 false
7 == 7 ;  // 结果为 true

== �会自动转换数据类型进行比较,所以会得到一些不想要的结果。
=== 不会自动转换数据类型,如果数据类型不一致,就返回 false
所以,不要使用 == 比较,始终坚持使用 === 比较。
浮点数的想等比较不要使用 ===, 而是判断差值在某个在某个阀值之内。

4. 循环

4.1 for

var x = 0 ;
var i ;
for(i=1; i<=10000; i++) {
  x = x + i ;
}
// 可以用 break; 来退出循环

4.2 for...in...

var person = {
  name: 'jessun',
  age: 27,
  tags: ['js', 'python', 'developer'],
  city: 'Shanghai',
  hasCar: false,
} ;

for (var key in person) {
  console.log(key) ; // 可以把所有属性循环出来, 包括继承而来的属性
  if (person.hasOwnProperty(key)) {
    console.log(key) ; // 循环本身定义的属性
  }
} ;

var a = ['A', 'B', 'C'] ;
for (var i in a) {
  console.log(i) ;    // '0', '1', '2'
  console.log(a[i]) ; // 'A', 'B', 'C'
}
// return 都是字符串

4.3 for...of...

只循环元素

var a = ['A', 'B', 'C'] ;
a.name = ['Hello'] ;

for (var i in a) {
  console.log(i) ; // return '0', '1', '2', 'name'
} ;

for (var i of a) {
  console.log(i) ; // return  'A', 'B', 'C'
}

4.4 forEach()

ES5.1 标准引入

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) ;
} ;
) ;

4.5 while...

4.6 do...while...

上一篇 下一篇

猜你喜欢

热点阅读