javaScript学习笔记
javaScript:
<script>属性(共6个):
async:可选,是否立即下载脚本。只对外部脚本起作用。不妨碍页面其他操作
charset:可选,src指定代码的字符集。(很少用,浏览器自动忽略)
defer:可选,延迟执行,仅对外部脚本有效。
language:已废弃。声明脚本语言。
src:可选,要执行的外部文件
type:可选,language的代替品。默认为text/javascript。
使用方式:2种
1、HTML内嵌
<script>
js........
</script>
2、外部引用
<script src="" />
<script src="" ></script>
<script>放在head中,会影响浏览器的程现。一般放在body末尾。
javascript标识符规则:
字母、下划线、$开头,
可含字母、数字、下划线、$
第一个字母小写(构造函数第一个字母大写区分)
驼峰命名
禁用关键字、保留字、true、fals、null等
关键字:
保留字:
注释:
//单行注释
/*
*多行注释
*/
严格模式:处理不确定行为,不安全操作抛错。
"use strict";
编码语句使用;
变量:松散类型。
var 变量名;(作用域中声明变量,退出后销毁)
*不初始化,其默认值是undefined
*不使用var声明变量时,会把变量默认为全局变量(不推荐!!!)
*可同时初始化多个:var a="aa",b,c=1;
6种数据类型:
5种基本数据类型:Undefined、null、Boolean、Number、String
1种复杂类型:Object
--typeof(变量) 获取数据类型
"undefined":未定义/未初始化
"boolean":Boolean
"number":Number
"string":String
"odject":Object/Nul
"function":函数
Undefined: 未定义/未初始化===undefined true
Null
Boolean:仅有true、false。(True、False都不是Boolean)
转换规则:
Number:
var floatNum=3.125e7 // 31250000
浮点数最高精度:17位。浮点数值计算会产生舍入误差
范围:5e-324(-Infinity) — 1.7976931348623157e+308(Infinity)
Number.MIN_VALUE — Number.MAX_VALUE
*正负无穷大不能参与计算
isFinite(123); 判断数字是否在可计算范围内
NaN:非数字
isNaN(20); //false 是不是 非数字
isNaN("20"); //false 可以被转成数字
isNaN("aaa"); //true
isNaN(true); //false * true-->1 false-->0
*同样适用于对象,其看对象的valueof能不能转换成数字
Number("11"):转型函数,可用于任何数据类型
parseInt("11",16):转换成整形,第二个参数为字符进制
parseFloat():转换成float,用法上与parseInt相似。
String:
''、""均可适用
string.lengt 获取字符长度(返回值为Number)
string值不可变,值改变后,对象就改变。原对象即销毁
object.toString(n):转换为string,n为以N进制转换。不传默认为10进制
Object:
var obj = new Object();(创建object,()可省略,但不推荐)
object实例共同属性方法:
Constructor:构造函数
hasOwnproperty(propertyName):判断给定属性在当前实例中是否存在。propertyName为string类型。obj.hasOwnproperty("name")
isPrototypeOf(obj):一个对象是否为另一对象的原型。--继承
propertyIsEnumerable(propertyName):给定参数能否使用for-in枚举,propertyName为string类型
toLocaleString():返回对象的字符串表示。
toString():返回该对象的字符串
valueOf():返回该对象的字符串,通常与toString返回类容相同
运算符:
++: +1,注意前后位置不同,计算顺序不同
--: -1,注意前后位置不同,计算顺序不同
+=:
-=:
+:
-:
*:
/:
%:取模(取余)
~:按位非
&:按位与
|:按位或
^:按位异或
<<:按位左移,不会操作符号
>>:按位右移,符号不变
>>>:按位右移,改变符号
逻辑判断:
!:非
&&:与
||:或
>:
<:
<=:
>=:
==:
!=:
===:全等
!==:
?:条件操作符
语句:
分支:
if(){ }else if(){ }else{ }
with(){ } 性能问题,不建议使用
switch(){case:"" break} case可跟各种语句,方便编码。case使用全等,"10"不等于10
循环:
do{ }while() 循环体至少被执行一次(先执行,后判断)
while(){ }
for(var i=0;i<count;i++){ }
*注意,while做不到的,for同样做不到。
for(ar in array){ } ar为array中的每个元素,array注意判空
break:
continue:结束当前循环,开始下次循环
return:return后的语句永远不会执行。
函数:
function funMane(p1,p2){} function 函数名(参数){函数体}返回值可有可无
*不能出现同名函数
*函数或参数名不能是:eval 或 arguments
函数会把参数组成一个数组来接受,所以在调用函数的时候,对于参数并不严格,可传递多个,可不传。但注意方法正确性。arguments为参数组成的数组,可在方法中调用它。arguments的长度是在调用的时候决定的,以后不能改变它的长度。修改它长度之外的值也无效。
JS中函数没有重载
变量
5中基本类型,操作的的是保存在变量中的值。(string类型在别的语言中是obj,js中为普通基本类型)
引用类型的值保存在内存中,js不能直接操作
=复制基本类型时,会创建一个新的变量,然后再把值复制到新分配的这个位置上。
=复制object类型时,会同样创建变量,再复制值,不过这个值是引用,不会在堆内存中创建新的object。复制后的变量与原来的变量将都指向堆中的同一个对象。
变量传递时,都是值传递!!!object类型的参数也一样。注意其传递的是引用值,不是实际的堆中的对象。
没有块级作用域
声明变量
查询标识符:从当前作用域一层一层往上找,直到全局。全局还没有,则报错
垃圾收集机制:
自动回收。开发人员不用过多关注。
回收方式:
1、标记清除
2、引用计数
3、手动调用。有兴趣可以研究。不推荐。
内存释放:解除引用,自动释放内存。提高性能。
引用类型:
Object:
var obj1 = new Object();
var obj2 = {};
对象属性访问方法:
1、obj.per 推荐
2、obj[per] -属性含有关键字、保留字或者会导致语法错误的字符时使用。优点可以通过变量来访问对象属性。
Array:
1、js中数组无数据类型限制。可存储任意类型数据。
2、数组长度可变。根据内容自动调整大小。
创建数组:
var ar = new Array();
var ar = new Array(10);
*可省略new关键字
var ar = [];
var ar = [1,2,3]
取读数组:
ar[下标]:下标从0开始
ar[下标]=‘’:赋值
数组length属性可手动设置。最大是4294967295。若设置的值小于原数组,则会从原数组截取相应的长度,后面的会舍弃。若超过了原有的长度,则原来无值的项默认为undefined。
ar.toLocaleString() 调用每项的toLocaleString方法,返回拼接后的字符串
ar.toString() 返回数组中每项的字符串形式以,拼接而成的字符串。会调用每项的toString方法,然后拼接。
ar.valueOf() 返回的为数组
ar.join("|") 重现toString方法,可修改拼接的连接符。默认为,
数组操作:
栈方法:后进先出
push() 添加(从末尾开始)
pop() 移除最后一项,并返回移除的项。
队列方法:先进先出
shift() 开头添加
unshift() 开头移除
排序:
reverse() 逆序
sort() 排序,默认toString转换每一项,然后升序排列。可自定义排序规则 *都返回经处理后的新数组
其他方法:
concat() 复制
slice() 截取
splice() 指定位置插入、修改、删除等
位置查找:
indexOf()
lastIndexOf()
*这两方法都使用全等
*都可接受两个参数1、要查找的项 2、起始位置,默认为0
迭代:5个,
every() 判断ar中每一项是否都符合标准,全部符合则返回true
filter() 返回符合的数组
forEach()
map() 返回运行后 新的数组
some() 任意一项返回true,则返回true
*均不会修改数组中包含的值。
*均接受三个参数,用法如下
ar.forEach(function(item,index,array){
});
缩小:
reduce()
reduceRight()
*每次计算的累计值,当前值,index,arr
ar.reduce(function(prev,cur,index,array){
});
*从开头/末尾开始
*返回最终的计算结果
- 点赞
- 收藏
- 关注作者
评论(0)