React Native JavaScripts的实用小技巧
来源:互联网 发布:sql语句自动优化工具 编辑:程序博客网 时间:2024/05/16 06:42
在学习React Native 中,发现很实用的一些小技巧,应该会不定期增减
1. 避免全局查找
在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些
function search() { //当我要使用当前页面地址和主机域名 alert(window.location.href + window.location.host); } //最好的方式是如下这样 先用一个简单变量保存起来 function search() { var location = window.location; alert(location.href + location.host); }
2.定时器
如果针对的是不断运行的代码,不应该使用setTimeout,而应该是用setInterval,因为setTimeout每一次都会初始化一个定时器,而setInterval只会在开始的时候初始化一个定时器
var timeoutTimes = 0; function timeout() { timeoutTimes++; if (timeoutTimes < 10) { setTimeout(timeout, 10); } } timeout(); //可以替换为: var intervalTimes = 0; function interval() { intervalTimes++; if (intervalTimes >= 10) { clearInterval(interv); } } var interv = setInterval(interval, 10);
3.字符串连接
如果要连接多个字符串,应该少使用+=;如果是收集字符串,比如多次对同一个字符串进行+=操作的话,最好使用一个缓存,使用JavaScript数组来收集,最后使用join方法连接起来
s+=a; s+=b; s+=c; // 替换为 s+=a + b + c; //多次收集 var buf = []; for (var i = 0; i < 100; i++) { buf.push(i.toString()); } var all = buf.join("");
4.常用字符串处理常用方法
/** 去除两端空格 相当于java的trim*/ str = str.replace(/(^\s*)|(\s*$)/g,''); /** 在字符串中找到一个子串*/ str.indexOf("string");//第一次出现子字符串的开始位置 str.lastIndexOf("string")//最后一次出现子字符串的起始位置。 /** 替换字串*/ str = str.replace("old","new"); /** 字符串截取*/ str = str.substr(start,end);
5.数字转换成字符串
一般最好用 “” + 1 来将数字转换成字符串
性能上来说:
(“” +) > String() > .toString() > new String()
6.浮点数转换成字符串
parseInt() 是字符串转化成整数,浮点数转换应该用Math.floor()或者Math.round()
7.各种类型转换 & 多个类型声明
所有变量都可以使用单个var语句来声明,这样就是组合在一起的语句,以减少整个脚本的执行时间
var myVar = "3.14159", str = "" + myVar, // to string i_int = ~ ~myVar, // to integer f_float = 1 * myVar, // to float b_bool = !!myVar, /* to boolean - any string with length and any number except 0 are true */ array = [myVar]; // to array
8.插入迭代器
var name = values[i]; i ++; //可以写成 var name = values[i ++];
9.条件分支
- 将条件分支,按可能性顺序从高到低排列:可以减少解释器对条件的探测次数
- 在同一条件子的多(>2)条件分支时,使用switch
- 使用三目运算符替代if条件分支 例:
if (a > b) { num = a; } else { num = b; } //可以替换为: num = a > b ? a : b;
10.巧用 || 和 && 布尔运算
function eventHandler(e) { if (!e) e = window.event; } //可以替换为: function eventHandler(e) { e = e || window.event; } if (myobj) { doSomething(myobj); } //可以替换为: myobj && doSomething(myobj);
11.refs 使用
<MButton ref="myRef" /> //替换成 <MButton ref={ref => {this.myRef = ref;}} />
12.render中的方法 提前bind
在每次 render 过程中, 再调用 bind 都会新建一个新的函数,浪费资源.
class extends React.Component { onClickBtn() { // do stuff } render() { return <MButton onClick={this.onClickBtn.bind(this)} /> } } //替换成 class extends React.Component { constructor(props) { super(props); this.onClickBtn = this.onClickBtn.bind(this); } onClickBtn() { // do stuff } render() { return <MButton onClick={this.onClickBtn} /> } }
0 0
- React Native JavaScripts的实用小技巧
- React Native 之小技巧总结
- react-native组件的拆分技巧
- react-native组件的拆分技巧
- React Native工作小技巧及填坑记录
- React-Native AsyncStorage存储key管理小技巧
- React Native工作小技巧及填坑记录
- React Native工作小技巧及填坑记录
- React Native工作小技巧及填坑记录
- React Native顶-底部导航使用小技巧
- React Native顶-底部导航使用小技巧
- React Native调试技巧
- React Native调试技巧
- React Native Text技巧
- React Native 技巧集锦
- 实用的python小技巧
- React Native小笔记
- React-Native调试技巧总结
- QTableWidget的样式和表头
- Python——关于pip的使用
- UVALive 7339 Owllen【思维】
- cassandra集群搭建
- <转载>如何成为一名优秀CTO
- React Native JavaScripts的实用小技巧
- Bootstrap CSS
- HttpClientUtil
- JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]
- 阿里2017笔试(3)
- Hadoop MapReduce执行过程详解(带hadoop例子)
- Spring MVC全局异常后返回JSON异常数据
- GL绘制一个矩形
- spring mvc 异常统一处理方式