js基础阶段总结

106 阅读8分钟

js三种写法 内嵌式 行内式 外联式

基础语句 alert('');浏览器弹出一个提示框 prompt("");页面弹出一个输入框 console.log('');控制台输出检查 document.write(""); 写css代码 typeof 显示是什么类型 debugger 断点调试

变量 var (变量名)=(值);

基础数据类型 string 字符串类型 转字符串类型 String() .TOString null,undefined 转字符串要报错 转义符
number 数值类型 转数字类型 Numder() 转数字 parseInt 转整数 parseFloat 转小数 true=1 false,null=0 undefined=NaN boolean 布尔类型 转布尔值Boolean 6个为false值 0, ‘’ , NaN , undefined , null , false null--空 undefined--未赋值

运算符 算数 + 字符串与其他类型+会拼接 - * / & + 数字与除字符串类型相加会转数字类型 NaN任何运算都是NaN 比较 比较运算会转布尔值 ==判断两边值相等,类型可以不同 ===全等 判断两边必须相同 自增自减 ++()后置 直接+再用 ()++前置 先用后加 逻辑 ! 非 相反 颠倒是非 && 或 两把都是对turn成立 || 与 一边是turn就成立 赋值 直接运算把结果给前面 优先级:1.括号》2.算数》3.比较》4.逻辑》5.赋值

短路运算 && 一假全假 左边为假,右边不再读取 || 一真全真 左边为真,右边不在读取 取决与谁判断结果 那结果就是谁

作用域 定义 一个函数或者一个变量的作用范围(生效范围) 函数外部声明的变量,函数内部可以使用 函数内部声明的变量函数外部不可使用 作用域 全局作用域:整个页面任何位置都可以访问的范围 全局变量。函数:全局作用域内声明的变量(函数) 局部作用域:es5只有函数才有作用域,每个函数都是一个作用域 局部变量:函数内部声明的变量。函数

js预解析 js执行过程 1.预解析 2.代码至上而下执行 预解析 函数声明和变量声明提前到当前作用域最上面 1.变量与变量同名时:只有一个变量声明,会改变变量但不会改变改变前面使用 2.函数与函数同名时:最后一个函数值会覆盖前面的函数,会改变前面的函数 3.函数与变量同名:只有函数声明提前,变量值会覆盖函数值 4.函数表达式:只会提升声明 不能先调用再声明

作用域链 多个作用域是由内而外访问的链式结构 使用的变量全局找不到就会报错 局部没有声明就不是当前局部变量,哪个作用域有声明就是哪个作用域的变量 当前局部变量没有就会去上一级获取

函数数据安全 全局的变量和函数容易被篡改,写进对象里可以实现数据安全不容易被改变

堆饯存储 引用类型进行赋值会发生一改全改 引用数据类型进行赋值是对应引用地址 引用数据类型进行比较,比较引用地址

复杂数据类型 数组[] 对象{} 函数 function 数组,对象 里面的值可以是任何类型的数据 Math数字对象 Math.属性名() random() 返回一个[0~1)之间的随机数 floor() 向下取整(数轴左对齐) ceil() 向上取整(数轴右对齐) round() 四舍五入 abs() 获取绝对值 absolute max() 获取最大值 min() 获取最小值 String字符串对象 1.split(字符) 通过某个字符对字符串进行切割,返回一个数组 2.charAt(index)获取字符串中的某个字符(index对应的字符 字符串有索引有长度) 3.indexOf(字符) 获取对应字符的索引值 4.substring(start,end) 截取字符串,从索引start截取到end,不包含end 5.substr(start,n) 截取字符串,从索引start开始截取到n个字符 6.replace(old,new)使用新字符替换旧字符 只替换第一个字符 7.toUpperCase() 字符串转大写 8、toLowerCase() 字符串转小写 Array数组对象 改变原数组的Array 添加删除方法 pust() 从数组最后增加值 pop() 从数组最后删除值 unshift() 从数组前面增加值 shift() 从数组前面删除值 数组翻转 reverse() splice() 数组添加或删除值 返回值是删除的项目 splice(0) 清空数组 splice(index) 只 传一个参数从index(索引)删除后面的元素 splice(index,x) 从索引(第一个参数)删除x个数(第二个是个数) splice(index,x,参数1,参数2)传多个参数是替换删除的元素 不改变原数组 主要是拿到返回值 slice(start索引,end索引] 从start到end截取数组中的值 (包前不包后)
indexOf() 和字符串一样 由这个值得到索引 没有这个值的话是-1 join('字符') 将数组转换成字符串通过某个字符连接 数组遍历的方法 forEach(回调函数) 回调函数有两个参数 第一个参数为数组内的项 第二个参数为数组的索引 map(回调) 每次遍历手动返回的结果整体打包成一个新数组 filter(回调) 过滤器 console() 数组的合并(从左往右开始排序) Date时间对象 创建日期对象 var 变量命名=new Date(); 获取当前时间 日期对象名.getFulYear(); 年 日期对象名.getMonth(); 月 日期对象名.getDay();星期 日期对象名.getDate(); 日 日期对象名.getHours(); 时 日期对象名.getMinutes(); 分 日期对象名.getSecouds(); 秒 日期对象名.getMilliseconds(); 毫秒 日期对象名.getTime(); 获取时间戳 获取任意时间对象 var 接收时间=new Date(‘时间,时间戳’)

对象 对象定义 类:值一类事物 对象:值某个具体的事物 描述性信息:相当于js中的变量 动态的功能:相当于函数 1.字面量创建 var 对象名={}; 对象的内部: 键值对 key(键):value() 键值对和键值对用‘,’隔开 2..js内置对象(函数)Object var 对象名=new Object(); 3.工厂函数 把对象封装在一个函数里
函数的参数是可以变的 返回值:创建出来的新对象 对象的增删改查 获取方法 调用属性:对象名.属性名 调用方法:对象名.方法名() 对象添加/修改值 添加属性:对象.属性=值 添加功能方法:对象.方法名=function(){} 存在就是修改,不存在就是添加 对象的删除 delete 删除一整组键值对 对象的操作方法 1.打点法 对象.属性名或者方法名 属性名或者方法名是写死 2.[]的方法 对象['属性名或者方法名'] 属性名或者方法名是不确定的 对象的遍历 for(var (key) in 对象名){} 对象有几个键值对就循环就几次 "key"是获取键值对的键 对象名["key"] 是获取键值对的值

数组 把一些值放在一个变量里 写法:var (命名)=[多个值] var (命名)=new Array() 索引:序号从0开始 获取:数组名[索引] 增加:数组[没有的索引]=值 修改:数组[想要改变的索引]=值 数组的遍历: 把数组中的值一个一个提出了,循环一些重复的代码 语法:var 数组名=[数组值] for(var i=0;i<数组名.length;i++){}

函数function 想要一段代码多次使用 写法
1.函数的声明式 function 函数名(){函数体--想要多次使用的代码} 2.函数调用式 函数名(); 需要调用函数才会执行 函数命名规范:大小驼峰 ,首个单词用动词 参数 函数里会随时变化的值 声明的参数是形参---占位,可以有多个参数 调用里的参数是实参---个数 需要和形参保持一致 返回值 return 函数执行结果 其他写法 将函数调用赋值给变量得到的是返回值 将函数名赋值给变量得到的是函数本身公式 函数表达式:var 变量=匿名函数 立即执行函数语法 (function(形参){})(实参) arguments 参数集合 有长度有索引是伪数组 回调函数:当一个函数作为另一个函数的参数使用

循环结构 for(初始化表达式;条件表达式;自增自减表达式){循环体} while(条件){循环体}
do(循环体}while(条件 要先执行一个循环体) 打断循环 if(打断位置){ break;打断后面不循环 contiue;跳过当前位置后面继续执行 for(var key in 对象名){循环体}

分支结构 if-else-if if(条件1表达式){条件1成立执行代码} else if(条件2表达式){条件2成立执行代码} else{上述都不成立的代码段} swith-case swith(变量){ case值:变量===值执行代码 default 上述都不成立执行} break 打断swith结构 三元表达式 条件表达式1?成立表达式:不成立表达式;