在学习React Native 中,发现很实用的一些小技巧,应该会不定期增减
在一个函数中会用到全局对象存储为局部变量来减少全局查找,因为访问局部变量的速度要比访问全局变量的速度更快些
function search() {
//当我要使用当前页面地址和主机域名
alert(window.location.href + window.location.host);
}
//最好的方式是如下这样 先用一个简单变量保存起来
function search() {
var location = window.location;
alert(location.href + location.host);
}
如果针对的是不断运行的代码,不应该使用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);
如果要连接多个字符串,应该少使用+=;如果是收集字符串,比如多次对同一个字符串进行+=操作的话,最好使用一个缓存,使用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("");
/** 去除两端空格 相当于java的trim*/
str = str.replace(/(^\s*)|(\s*$)/g,'');
/** 在字符串中找到一个子串*/
str.indexOf("string");//第一次出现子字符串的开始位置
str.lastIndexOf("string")//最后一次出现子字符串的起始位置。
/** 替换字串*/
str = str.replace("old","new");
/** 字符串截取*/
str = str.substr(start,end);
一般最好用 “” + 1 来将数字转换成字符串
性能上来说:
(“” +) > String() > .toString() > new String()
parseInt() 是字符串转化成整数,浮点数转换应该用Math.floor()或者Math.round()
所有变量都可以使用单个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
var name = values[i]; i ++;
//可以写成
var name = values[i ++];
if (a > b) {
num = a;
} else {
num = b;
}
//可以替换为:
num = a > b ? a : b;
function eventHandler(e) {
if (!e) e = window.event;
}
//可以替换为:
function eventHandler(e) {
e = e || window.event;
}
if (myobj) {
doSomething(myobj);
}
//可以替换为:
myobj && doSomething(myobj);
ref="myRef"
/>
//替换成
ref={ref => {this.myRef = ref;}}
/>
在每次 render 过程中, 再调用 bind 都会新建一个新的函数,浪费资源.
class extends React.Component {
onClickBtn() {
// do stuff
}
render() {
return this.onClickBtn.bind(this)} />
}
}
//替换成
class extends React.Component {
constructor(props) {
super(props);
this.onClickBtn = this.onClickBtn.bind(this);
}
onClickBtn() {
// do stuff
}
render() {
return this.onClickBtn} />
}
}