Javascript阅读笔记(一)

1. 类型,值和变量

  1. book[“name”]可获取对象的某个属性;
  2. “two”>”three”会比较字符串在字母表中的索引大小;
  3. Date类日期的减法,计算时间间隔的毫秒数;
  4. 字符串转义符\:\n换行;\’撇号单引号;\”双引号;\f换页符;\反斜线;
  5. 字符串常用方法:
var s = "asdfgh";
var str =ABCABCABC

charAt(pos),返回字符pos位字符串,不改变原字符串

s.charAt()   //’a’,字符串s的第0位
s.charAt(3)   //’f’,字符串s的第三位

substring(start,?end),返回字符串,不改变原字符串

s.substring(3)   //’fgh’,字符串s的第三位到最后
s.substring(0,3)   //’asd’,字符串s的第0到3(不包括3)位

slice(?start,?end),返回字符串,不改变原字符串

s.slice()   //’asdfgh’,整个字符串
s.slice(3)   //’fgh’,字符串s的第三位到最后
s.slice(0,3)   //’asd’,字符串s的第0到3(不包括3)位
s.slice(0,-3)   //’fgh’,字符串s从后往前第0到-3(不包括3)位

indexOf(string,?pos) / lastIndexOf(string,?pos),返回字符串首次/末次出现的位置数字,没有则返回-1

s.indexOf(‘a’)   //0,字符串s中a首次出现的位置
‘asdaasfgh’.indexOf(‘s’,3)   //5,从第3位开始s首次出现的位置,lastIndexOf不支持

split(sep,?limit),将字符串分割,返回分割成的字符串数组,不改变原字符串

str .split(“”)   //["A", "B", "C", "A", "B", "C", "A", "B", "C"]
str .split(A)   //["", "BC", "BC", "BC"]
str .split('B',2)   //["A", "CA"],返回被B分割后的前两位数组

replace(str,replacer),替换某个字符串,返回新字符串,不改变原字符串

str.replace(ABC,’abc’)   //’abcABCABC’,返回将第一个ABC替换成abc的新字符串
str.replace(‘’,’abc’)   //’abcABCABCABC’
str.replace(‘ ’,’abc’)   //’ABCABCABC’

toUpperCase() / toLowerCase(),字符串大写/小写,返回新字符串,不改变原字符串

s.toUpperCase()   //’ASDFGH’
s.toLowerCase()   //’asdfgh’

includes(str,?pos),字符串中检测文本,返回true/false

s.includes('df')   //true
s.includes('df',4)   //false,第4位开始不包含df

startsWith(str,?pos),是否以某字符串开始

s.startsWith(as)   //true
s.startsWith(as,4)   //false,第4位是否以as开始

endsWith(str,?endpos),是否以某字符串结尾

s.endsWith(‘gh’)   //true
s.endsWith(‘gh’,5)   //false,第5位以前(不包括5)是否以gh结尾
  1. 字符串可当作只读数组,可用s[0]获取字符串中单个字符
false ==''   //true
false == 0   //true
1==true   //true
-1==true   //false
false == -0    //true
//其他数字都不为true
NaN == false   //false
null == false   //false
undefined == false   //false
null == undefined   //true
typeof(null)    //"object"
typeof(undefined)   //"undefined"
var s=’asd’,n=1,b=true   //字符串、数字、布尔值
var S=new String(s)	   //字符串对象,可添加属性和方法
var S1=String(n)	   //字符串
var N=new Number(n)	   //数字对象,可添加属性和方法
var B=new Boolean(b)	   //布尔值对象,可添加属性和方法

s、n、b和S、N、B运算==为true,运算===为false;S、N、B添加属性后,运算结果不变。typeof运算S、N、B为object类型

  1. Undefined、null、布尔、数字、字符串等原始值是不可改变的,只能返回一个新的值进行赋值,数组和函数等对象的值可修改。对象称为引用类型,对象的值都是引用,对象的比较均是引用的比较,两个对象即使完全一样也不相等,除非引用同一个基对象。
var o={x:1},p={x:1}
0===p   //false
var a=[]
Var b=a
a===b   //true

2. 语句

  1. 逻辑表达式&&
    ① 当操作数都是布尔值的时候,对两个值执行布尔与操作,当两个操作数都是true才返回true;
    ② 当操作数不一定是布尔值,可以对操作数的真值假值进行布尔与操作(假值:false、null、undefined、0、-0、NAN、””)。运算符首先计算左操作数的值,如果是假,整个表达式结果也为假,这时简单的返回左操作数的值,而并不会对右操作数进行计算。如果左操作数是真值,表达式的结果就依赖于右操作数的值,运算符计算右操作数的值并将其返回作为整个表达式的计算结果。
    例如:
var json={str:[1,2]}
var len=json&&json.str&&json.str.length;//len=2
var num=json&&json.sss&&json.sss.length;//num=undefined
  1. switch语句
switch(expression){
case n:
//执行代码块1
break;
default:
//执行代码块2
break;
}

执行switch语句时,首先计算expression的值,然后查找与之相同的case表达式(按照‘===’比较)。找不到匹配的case会执行default代码块。如果没有break语句,会从匹配处依次执行后面的语句。

  1. 跳转语句
    break是退出最内层的循环或switch语句
    continue是终止本次循环的执行并开始下一次循环的执行
    return让解释器跳出函数体的执行,并提供本次调用的返回值
    throw语句触发或者“抛出”一个异常,他是与try/catch/finally语句一同使用的

3. 对象

  1. 对象可以看作是属性的无序集合,每个属性都是一个名/值对,除了字符串、数字、布尔、null、undefine之外的值都是对象。
  2. Object.keys(json),可以获得json对象属性名组成的数组。
  3. 用对象直接量创建对象:var point={x:0,y:0} 这个表达式每次执行都会创建并初始化一个新的对象。
  4. new关键字创建对象:var arr=new Array(); var ob=new Object();
  5. 每一个对象都从原型继承属性。
    (1)通过对象直接量创建的对象都有同一个原型对象,可通过Object.prototype获得对原型对象的引用。
    (2)通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。
    (3)所有的内置构造函数都具有一个继承自Object.prototype的原型。所以,new Date()创建的Date对象的属性同时继承自Date.prototype和Object.prototype。
    这一系列链接的原型对象就是“原型链”。

4. 数组

  1. 数组的索引是基于零的32位数值:第一个元素索引为0,最大可能的索引为(232-2)。
var a = [1,2,3,4];
	a.length=3;  //a=[1,2,3]
  1. delete a[1];//a在索引1的位置不再有元素,也不为undefined

在这里插入图片描述
5. join();将数组中所有元素转化为字符串并连接再一起,返会生成的字符串。是字符串split()方法的逆向操作。

var a =[1,2,3];
a.join();		//1,2,3
a.join(“ “);	//1 2 3
a.join(“”); 	//123
var b = new Array(5);
b.join(-);		//-----
  1. reverse()
var a =[1,2,3];
a.reverse().join();  //”3,2,1”,并且现在的a是[3,2,1]
  1. sort();
    在这里插入图片描述
    在这里插入图片描述
  2. concat();创建并返回一个新数组,但不会修改调用的数组。
var a =[1,2,3];
a.concat(4,5);		//返回[1,2,3,4,5]
a.concat([4,5]);		//返回[1,2,3,4,5]
a.concat(4,[5,[6,7]]);	//返回[1,2,3,4,5,[6,7]]
  1. slice();和字符串slice方法相同
  2. splice();是在数组中插入或删除元素的通用方法,且会修改调用的数组;
    在这里插入图片描述
  3. forEach()方法从头至尾遍历数组,为每个元素调用指定的函数,其可以有三个参数:数组元素、元素的索引和数组本身。
var data = [1,2,3,4,5];
var sum=0;
data.forEach( 
	function(v,i,a){a[i]=v+1;} 		//data=>[2,3,4,5,6] 
)

forEach无法像for循环使用break语句终止遍历。需要将forEach()放在try块中,并抛出异常:

function foreach(a,f,t){
try{ a.forEach(f,t); }
catch(e){
if(e===foreach.break) return;
Else throw e;
}
}
foreach.break = new Error(stopIteration);
  1. map() 将调用的数组的每个元素传递给指定的函数,并返回一个数组,不修改调用的数组。
var a=[1,2,3];
var b=a.map(function(x){returnx*x});  //b=>[1,4,9]
  1. filter() 方法返回的数组元素是调用的数组的一个子集。传递的函数返回值为true或能转化为true的值,该元素就将加到一个作为返回值的数组中。
var a = [5,4,3,2,1];
var smalLValues = a.filter(function(x) { return x<3} );   //[2,1]
var e = a.filter(function(x,i) { return i%2==0} );   //[5,3,1] , i为索引
  1. every()和some() 。
    (1)every()仅当数组中所有元素调用判定函数为true时才返回true
var a = [1,2,3,4,5];
a.every(function(x){ retrn x<10 })  //true;所有值<10
(2)some()当数组中至少有一个元素调用判定为true,它就返回true
a.some(function(x){ retrn x%2 === 0 })  //true;含有偶数
一旦every()和some()确认返回值就会停止遍历数组元素。
空数组调用every()返回true,调用some()返回false。
  1. 数组类型
Array.isArray([])  //true
Array.isArray({})  //false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值