JavaScript全栈学习笔记(一)

基础语法

数据类型:

  • JavaScript不区分整数和浮点数,统一为Number类型

  • 字符串可以用单引号和双引号

  • “==”会自动转换数据类型之后进行比较,只比较值(不推荐)
    ”===”不会自动转换数据类型,会同时比较数据类型和值(推荐)
    特例:NaN与所有值都不相等,包括它自己,只能通过isNaN()函数来判断。

isNaN(NaN); // true
  • 浮点数的比较:浮点数在计算机中并不能精确的表示,所以不能直接比较两个浮点数是否相等,只能通过两者差的绝对值是否小于某个阈值来比较:
Math.abs(a-b) < 0.000001 // true
  • null和undefined:
    null表示“空”值,和数字0以及“”表示长度为零的字符串不一样。
    undefined表示“未定义”,通常只用在判断函数参数是否传递。

  • 数组:在JavaScript中,数组可以包括任意的数据类型。推荐使用“[]”来对数组进行初始化,直接给Array的length属性赋一个新值会导致Array大小的变化。如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化

var a = [1,3.14,"hello",null,true]
a[6] = 'x' ; // a 变为[1,3.14,"hello",null,true,undefined,'x'] ;

// 使用 for...in 循环遍历数组
var arr = ['A','B','C'] ;
for(var i in arr){
    alert(i) ; // '0','1','2'
    alert(a[i]) ; // 'A','B','C'
}

注意:for … in对数组循环得到的是string而不是Number。
常用方法:

indexOf() //返回指定元素的位置;
slice //截取数组的部分元素,然后返回一个新的数组,如果给参数就会从头截取全部元素,相当于复制数组;
push() //末尾添加元素并返回数组新的长度;
pop() //删除数组最后一个元素,并返回这个元素;
unshif() //数组头部添加元素,返回新数组的长度;
shift() //删除数组第一个元素,空数组调用该方法返回undefined;
sort() //数组按默认方式排序;
reverse() //数组倒序;
splice() //从指定索引开始删除若干元素,然后从该位置添加若干元素;
concat() //当前数组后面连接一个数组;
join() //数组每个元素都用指定的字符串连接起来,然后返回连接后的字符串,注意即使数组元素不是字符串也会先自动转换成字符串然后再连接;
  • 对象:由键—值对组成的无序集合,其中键(对象属性)都是字符串,值可以为任意数据类型。
var person = {
    name: 'huluwa',
    age: 27,
    tags: ['js', 'web', 'mobile'],
    city: 'HangZhou',
    hasCar: false,
    zipcode: null
}
    // 可以直接给对象添加属性
    person.school = qinghua ;
    // 可以使用delete删除属性
    delete person.school ;  
    // 判断person是否拥有某一属性
    'name' in person ; // true
    'grade' in person ; // false
    'toString' in person ; //true
    ***注意:所有对象都继承自objectobject有toString属性,所以这里person也有。
    ***所以要判断某一个属性是否是person独有的可以使用hasOwnProperty()方法:
    person.hasOwnProperty('name') ; // true
    person.hasOwnProperty('toString') ; // false

    // 使用for...in循环遍历对象
var o = {
    name : 'huluwa' , //千万注意这是逗号,不是分号
    age : 20 ;
    city : 'Hangzhou' // 没有逗号或分号
}
for(var key in o)
    // 打印每一个key
    alert(key) ;
  • strict模式:强制通过“var”声明变量,未声明就使用将导致运行错误。启用strict模式的方法是在代码的第一行加上”use strict”;

  • 多行字符串:最新的ES6标准新增反引号“`”来表示多行字符串。

alter(`多行
字符串
这样
显示`);
  • 模板字符串:最新的ES6利用“${}”来连接字符串。
var name = 'huluwa' ;
var age = 27 ;
var message = `hi, ${name},you are ${age}!`; //必须用反引号包围字符串,不是单引号!!!
alert(message) ;
  • 字符串常用方法:
var s = 'hello' ;
s.toUpperCase() ; // 全部变为大写
s.toLowerCase() ; // 全部变为小写
s.indexOf('o') ; // 指定字符串出现的位置,没有返回-1
s.substring(0,3) ; // 返回指定索引区间的子串 
  • 调用字符串提供的方法不会改变原有字符串的内容,而是返回一个新的字符串。

  • 特别:null、undefined、0、NaN和空字符串” 均视为false,其它均视为true。

  • for … of循环遍历集合

var arr = ['A', 'B', 'C'] ;
var s = new Set(['A', 'B', 'C']) ;
var m = new Map([[1,'x'],[2,'y'],[3,'z']]) ; // 利用二维数组来初始化
for (var x of arr)
    alert(x) ; // 遍历数组
for (var x of s)
    alert(x) ; // 遍历Set
for (var x of m)
    alert(x[0] + '=' + x[1]) ; // 遍历Map
  • 使用iterable的forEach()方法遍历集合:
// 遍历数组
var arr = ['A','B','C'] ;
arr.forEach(function(element,index,array) {
// element 指向当前元素的值
// index 指向当前元素的索引
// array 指向数组本身
alert(element) ; // 'A' 'B' 'C'
alert(index) ; // 0 1 2
alert(array) ; // 'A,B,C' 'A,B,C' 'A,B,C'
}) ;

// 遍历Set
var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, sameElement, set) {
    alert(element); // 'A' 'B' 'C'
    alert(sameElement); // 'A' 'B' 'C'
    alert(set); // 'object Set' 'object Set' 'object Set'
});

// 遍历MAP
Var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
m.forEach(function (value, key, map) {
    alert(key); // 1 2 3
    alert(value); // 'x' 'y' 'z' 
    alert(map); // 'object Map' 'object Map'
 'object Map'
});

// ***以上参数可以自定义***

摘自廖雪峰博客http://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值