在学习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 使用
//替换成
{this.myRef = ref;
}}
/>
12.render中的方法 提前bind
【Java/Android|React Native JavaScripts的实用小技巧】在每次 render 过程中, 再调用 bind 都会新建一个新的函数,浪费资源.
class extends React.Component {
onClickBtn() {
// do stuff
}render() {
return
}
}//替换成
class extends React.Component {
constructor(props) {
super(props);
this.onClickBtn = this.onClickBtn.bind(this);
}onClickBtn() {
// do stuff
}render() {
return
}
}
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)