我的ECMAscript 待续

  1. ECMAscript
  2. 运行在客户端的脚本语言
  3. 计算机组成:1.硬件:输出设备 输入设备 CPU 硬盘(永久) 内存(临时)二进制数据
  4. 软件:系统:wd mc linux 软件 :qq之类
  5. 程序运行:数据放到硬盘到内存条到cpu
  6. 发展历史:布兰登。艾奇 1961年生,1995年十天完成js设计,网景公司原名livescript,后与sun合作改名js
  7. js作用:表单验证密码强度(最初),网页特效,游戏。。
  8. ECMAscript:规定了js的编程语法和基础核心,是所有浏览器共同遵循的一套标准
  9. 变量:一个装东西的容器,是程序在内存中申请一个用来存放数据的空间
  10. 10.标识符:自己命名,变量一般用名词,函数用动词。
  11. 变量使用:1.声明变量 2.给变量赋值 ,声明变量并赋值叫变量初始化
  12. 10.命名规范:字母,$,—,_,开头其他不行
  13. 数字型:number,在js中八进制前面加 0十六进制前面加0x
  14. 数字型最大值:number.max_value ,最小为min。无穷大:INfinity。
  15. 字符串转义字符:\n ,要加在引号里面
  16. ** 字符串的长度:length,检测长度**
  17. null+1=1,null+true=1.
  18. prompt:取过来的值为字符串类型
  19. 字面量:通过字面量可以判断为什么类型的值
  20. 数据类型的转换
  21. 转换为字符串:1. 变量。tostring,2 .String(变量),3. 利用+连接空字符串(隐式转换主要)
  22. 数组转换为字符串:arr.toString返回的数字之间用 , 分隔 , 而使用 join(‘这里可以输入任意符号分隔’)
  23. 字符串转换为数组split(‘分隔符’)这里的分隔符取决于字符串的分隔符要写一样
  24. 转换为数字:1 。parseInt(变量)得到整数 2。parseFloat(变量)得到小数。必须数字开头可以去掉后面的字母(120px)3。利用算数运算(/,*,-)进行隐式转换 4 .。大于号小于号也可以转换
  25. 布尔值:为false(‘’,0,nan,null,undefined)
  26. js中小数计算有误差
  27. 表达式:由数字或者运算符或者变量组合在一起的式子 1+1 为表达式 , 2为返回值。
  28. 比较运算符返回布尔值
  29. 运算符优先级:console.log ( 4 > = 6 || '人' ! = '阿凡达' && ! ( 12 * 2 == 144 ) && true ) ,true,&&的优先级要大于||。
  30. 流程控制语句:1.顺序,2.分支(多选一) ,3.循环。
  31. 分支语句:1.if(里面只有一个语句会被执行,主要用于范围的值,如成绩),2.switch(主要用于固定的值,直接跳到你效率更高)switch(表达式){case 值 : break ;default :(default类似else) //用表达式和case后面的值进行全等(===)比较,注意 case 值 后面的符号是冒号不是分号,}表达式写成变量这样就不会写死。没有break会一直向下执行。
  32. 循环语句:for循环用于计数重复执行代码:var num = prompt(‘输入班级总人数’);var sum = 0 ; var aver = 0 ; for (var i = 0 ; i < num ; i ++){var score = prompt ('请输入'+i+'成绩');//因为prompt返回的是字符串所以需要转换为数字 ,sum = sum + parseFloat(score);}.
  33. 双重for循环:第一个for为外层,里面的for,外面for执行一次,里面执行全部。
  34. . while循环:多用于验证码判断,错误就一直出现,和if 合作,相比for循环可以在表达式上进行判断。
  35. do。。while:循环先执行一次,再判断。
  36. **数组:可以存储各种类型的数据并且保存在一个变量中。**1.字面量2.new arr创建
  37. 遍历数组:把数组里面的内容从头到尾访问一遍,数组索引号从 0 开始所以在for循环中 var i = 0 ;数组里的元素是arr【i】,而不是单个 i ,单个 i 是计数。输出多个变量用逗号分开。
  38. 数组中求最大值:思想、假设第一个为最大值(max=arr【0】),利用for,if 和后面依次比较,结果最大的值再赋值给max。
  39. 筛选数组:巧用一个空数组的 1.newArr。length为0。2. new。push()
  40. 数组去重:核心 i f (arr【i】!=0(某个数)),newArr。length为0和筛选数组大致一样。
  41. 数组去重:可以代替上一个,核心思想:利用旧数组与新数组进行元素比较,利用indexOf()返回的值为-1就能知道新数组有没有,遍历旧数组,如果新数组没有就保存下来。
  42. 数组翻转:1.思想、让新数组第一个等于旧数组第四个。i= arr.length-1;i > = 0 ;i --;再赋值。2.arr.reverse(),可以直接翻转
  43. 冒泡排序:是一种算法两两比较,从大到小或者小到大,就是排序。 2. arr。sort()可以直接排序 3. 出现十位数则需要arr.sort(function(a,b){return a - b 升序 b-a 降序});
  44. 检测是否为数组:instanceof 运算符 2.Array.isArray(变量)h5新增只支持i9以上。
  45. 添加数组元素:*push()*后 ,*unshift()*前。直接添加元素,返回新数组长度。
  46. 删除数组元素:*pop()*后、shift() 前。括号内不用添加元素。console.log(pop())、返回删除的元素,
  47. 获取数组元素索引:indexOf(数组元素)只能返回第一个,找不到就返回 -1 。last
  48. 函数
  49. 函数就是封装(打包)一个可以被调用执行的代码块,可以让代码重复执行。不调用不执行。函数名()
  50. 函数的返回值return:返回return后面的结果给函数,然后调用函数。、、在开发中用变量接收函数返回的结果,然后再输出变量。
  51. return之后的代码语句不会被执行。return num1,num2;只会返回最后一个值num2,解决方法return【num1,num1+num2】利用数组解决
  52. 函数如果没有return返回undefined
  53. 函数中arguments:是函数中一个内置对象,存储传递来的实参。伪数组:1.具有length 2.按照索引存储 3.没有数组push()、pop()的方法。可以省去形参的添加。只有函数才有arguments
  54. 函数可以相互调用
  55. 函数声明方式有命名函数和函数表达式匿名函数(用变量名) ,
  56. 作用域:在某个范围起作用,减少命名冲突,分为全局和局部(函数内部)函数形参看做局部变量,局部变量执行后就销毁,全局需要关闭网页才结束占用资源内存。
  57. 作用域链、;就是从内部函数变量往外面找,从而产生类似链子的结构
  58. js预解析:变量提升
  59. js引擎运行js,分为两步1.预解析、2.代码执行 先把变量提升到当前的作用域并且不赋值函数提升只要不是用 var 变量名命名的函数就不会报错,var a = b = c =1>>var a = 1 ; b = 1 ; c = 1;这里的b、c就变成了全局变量
  60. 对象是一个具体的事物,要具体不要泛指,由属性(事物的特征。名词)和方法(事物的行为可以做什么事。动词)组成,对象更加明了
  61. 键值对:属性(属性名,属性值),方法:匿名函数
  62. 调用函数方法:1.对象名.属性名、 2. 对象名【‘属性名’】 这里属性名必须加上引号、 3.对象名.方法()
  63. 构造函数:使用构造函数是因为可以把那些多个属性和方法相同的对象,统一抽象出来封装到一个函数里面。function Star(){this.name=形参;} 。var obj = new Star(实参)//调用函数返回的就是一个对象
  64. 1.构造函数首字母大写彰显不同 。2.构造函数不需要return就可以返回结果。new 函数名就是创建了一个对象 3.构造函数泛指某一大类。 4. 利用构造函数创建对象的过程叫对象的实例(上面的obj可以叫对象也可以叫实例)var obj =new Star()这就是一个对象实例。。。。var arr = new Array()这个为数组对象,arr为对象实例。后面创建一个array对象,
  65. new关键字 在构造函数中作用:1.在内存中创建了一个空的对象, 2. this就会指向刚才创建的空对象 3.执行构造函数里面的代码,给创建的空对象添加属性和方法,4.返回这个对象,所以不需要return返回函数
  66. 遍历对象:不用for,改用for。。in进行遍历for(var k in obj)。
  67. 构造函数需要new,内置对象不需用。
  68. 内置对象:顾名思义内置对象为js自带的,可以直接使用。可以快速开发
  69. mdn文档查询
  70. 常用内置对象: 1 . Math.max()可以求出最大值 ,2. 绝对值Math.abs() 3. 往下取整Math.floor() 4 .往上取整Math.cell() 5 .Math.round()四舍五入,往大了取整负数也是往大取整。 6 . Math.random()返回一个随机数,括号内不跟参数,函数形参一个最大数,一个最小数。
  71. Date日期对象的使用:是一个构造函数。必须使用new来调用,如果没有参数返回当前系统的当前时间function getTime() { var time = new Date(); var h = time.getHours(); h = h > 10 ? h : '0' + h;//小于十在前面加0.。。秒杀 var f = time.getMinutes() f = f > 10 ? f : '0' + f; var m = getSeconds(); m = m > 10 ? m : '0' + m; return h + ':' + f + ':' + m; } console.log(getTime())
  72. 时间戳:Date.now()h5 获得毫秒数,永远不会重复。可以直接输出不用new。另一种方法,var nowDate = + new Date()
  73. ***基本包装类型:***简单数据类型包装成复杂类型,为了简单数据类型也可以使用对象里面的属性。(strig、number、boolean)
  74. 字符串对象:,字符串本身 不可被改变赋值一个新的只是改变了地址
  75. 根据字符返回位置:利用变量.indexOf(‘查找的字符’,【从第几个开始查找】)
  76. 根据位置取出字符:1.变量.charAt(索引号)2. charCodeAt(索引号)返回索引号的字符ASCII ,目的判断用户按了那个键。3.h5新增,arr【索引号】。
  77. 拼接和截取字符串:concat可以连接两个字符串类似于+号,第二个**substr(‘截取的起始位置)’,‘截取几个字符串’)**str.substr(2,2)索引号2,和2个字符。
  78. 替换字符和字符转数组:replace(‘a’,‘b’)把a替换为b。
  79. 栈:简单数据类型,存放的是值,var a = 10; b = a ;这里只是把a的值赋值给了b,后面a变化b也不会变化,
  80. 堆:复杂数据类型可以用new创建,在栈里存放地址(16进制),这个地址指向堆里面。var a = 10 ;b = a ;这里是把a的地址给了b,两人在栈共用一个地址,所以指向堆里面的内容也是一样,修改其中一个另一个都会发生改变。如果再次给a赋值就相当于重新开启了另一个地址。
上一篇:Javascripts简介及应用


下一篇:ECMAScript