原生js干货
来源:互联网 发布:手机80端口 编辑:程序博客网 时间:2024/06/05 02:44
1.网站的性能优化?
http越少越好 (文件合并)
http越小越好 (文件压缩css,js,图片)
图片的延迟加载
使用CDN托管,理想的状态下(需要钱)
不需要的代码及时清理(比如定义的变量)
变量尽量使用局部的,少使用全局的(变量的冲突)
能使用系统的方法尽量不使用自己的方法
尽量使用正则操作字符串(速度很快)
DOM操作是昂贵的,能少操作就少操作
2.16毫秒是人眼最合适的动画时间;
设置一个盒子的动画: 获取盒子 –> 定义一个变量 –> 设置一个定时器 (16毫秒) –> left++;
oDiv.style.left = left + ‘px’; 赋值操作(较少操作DOM)
3.for循环的优化,把 var len = arr.length; var i=0;提出来,事实上没有减少,有时还会多;这个是理论可以优化性能.
4.获取时间的毫秒数: var time = Date.now() 等同于 getTime() : 时间戳
测试两个时间差就可以测试for循环的用了时间
5.嵌套循环优化: 外小内大(比如: 你建立的文件,文件夹里面包文件夹,外面小,里面多,就可以更加方便);
6.js的特点 : 跨平台 简单 弱语言 事件驱动 面向对象
7.es6块级作用域: 大括号包裹住的内容
8.let : 声明不提前 块级作用域
9.严格模式 : 变量一定要用var定义,不定义报错
在{} 里面定义的函数是一个局部的变量,只能在改{}里面使用
如果函数没人调用,就不在是window,而是undefined
10.包住错误,后期修改
try { 可能出现错误的代码} catch (e) { consoloe.log(1111) // 解决报错的,e是错误的信息}
11.数据类型 : number string boolean undefined object function
null (空对象)
NaN : number 结果不是一个数字
NaN == NaN : false
13.Array最顶层是一个对象
14.数据类型的转换:
Number() parseInt() parseFloat()
转boolean : 0 ,false ,unedfined ,null , 空字符串
保留几位小数 : toFixed() 返回值是一个字符串
15.隐式转换 : 不由程序员自己转换 ( - )( == )
16.字符串和true或者false 比较,值都是false;
17.自增自减 : ++ –
a++ : 先赋值,再自增
++a : 先自增,后赋值
18. **求余操作**(%) : 结果看第一个数的符号
19.变量的问题,如果不用var 定义的是全局变量
function show () { var a = b = 10;}show ();alert(a) // 报错alert(b) // 全局变量 (var a, b = 10 两个都是局部的变量)
20.回调函数 : 不由程序员调用的函数
21.只要用了回调函数,不会等函数执行完再执行下一行
22.封闭空间: (function (i) { 代码 })(i) 传过来的i值是局部的
23.封闭空间的作用: 解决i值的问题 解决变量的冲突 (;()(); 在前后加上括号,防止忘记写分号)
24.闭包: 子函数可以调用父函数的变量
25.作用域链 : 先从自己找 –> 上一层 –>… > 全局 –> 报错
禁止多层嵌套 : 内存的泄漏
(function () {})();
26.数组 : 栈 : push(返回值是长度) pop(返回值是删除元素) concat(新数组)
队列 :unshift(返回值长度) shift(删除的元素) indexOf() slice() reverse(翻转数组)
splice(a,b,c) : a下标 b:删除的个数 c添加的个数
27.在循环里面删除数组中的元素,删除以后应该i–;
28.sort排序方法
sort(function(n1,n2) { return n1-n2; 从小到大 return n2-n1;})
29.toString() :转换字符串,中间逗号隔开
join(’ ’ ) :数组转字符串,中间 隔开
30.冒泡 : 从第一个数据开始,和后面的所有数据对比,如果第一个大于后面的值,就调换位置
function bubbleSort (arr) { for (var i=0; i< arr.length;i++) { for (var j = i + 1; j < arr.length;j++) { if (arr[i] > arr[j]) { var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } }return arr}
31.
32.JSON对象 : {} 属性 方法
var obj = { name : ‘zd’,age:14}; var a = ‘name’(赋予变量) ,设置属性的时候需要中括号 obj[a] = ‘123’;
删除属性 : delete obj.name;
33.for in 循环 for ( var key in obj ) {}
34.对象的引用 : 深复制 和 浅复制 (复制对象的属性和方法)
浅复制 : 复制的是对象的内存地址,就是对像的引用
var json1 = { a;"1",b:'2'}var json2 = json1json2.a = 3; 改变json2,json1的a值也改变;(浅复制)
35.深复制 : 只复制属性和方法,不复制地址
var json1 = { a;"1",b:'2'}var json2 = {};for (var key in json1) { json2[key] = json1[key];}json2.a = 2;
36.找出最多字符,字符的个数
var str = 'sdfsdsdfadsfsdagf'; var json = {};for ( var i =0; i < str.length;i++){ var x = str.charAt(i);if (json[x] == undefined) { json[x] = 1; } else { json[x]++; }}var char = '';var max = 0;for (var key in json ) { if ( max < json[key]) { max = json[key]; char = key; }}
原理 : 先设置一个空的对象, for循环str字符串,在循环里用一个变量接收根据下标获取元素,再判断对象的属性是否为undefined ,是的话设置对象的属性为1,反之对象的属性++;
定义一个空的字符串,和最大值设置为0; for of 循环 ,
判断 max 小于 对象的下标,max = json[key];char = key;
- 原生js干货
- 原生JS
- 原生js
- JS原生
- 原生JS
- 前端js干货
- JS干货--Function
- js基本功—干货
- JS干货--对象字面量
- JS干货--拷贝与继承
- JS设计模式理解干货
- 原生js周选择器
- js原生函数bind
- 原生js拼图游戏
- 原生js cookie
- 原生js弹出框
- js原生拖拽
- js原生offsetParent解析
- 【转载】性能分析之看专业的,来进步
- 【动态规划】之硬币找零问题(难度:1星)
- 递归和非递归实现规律函数
- HDU
- android 4.4模拟器java代码设置隐藏drawableRight失败
- 原生js干货
- Hg修改username和email(提交代码后显示)
- 树的同构
- uva 673 括号匹配
- MyBatis3框架学习(1)----mybaits初识和第一个helloworld
- 机器学习第二周
- 应注意的考题
- HTTP/2之服务器推送(Server Push)最佳实践
- 12月14日训练笔记