如何跳出二层循环
foo:for(var i=0;i<4;i++) {
for (var j=0;j<4;j++) {
if((i*j)>=3){
console.log('stoping', i,j);
break foo;
}
console.log(i,j);
}
}

如何跳出二层循环
foo:for(var i=0;i<4;i++) {
for (var j=0;j<4;j++) {
if((i*j)>=3){
console.log('stoping', i,j);
break foo;
}
console.log(i,j);
}
}
考虑:数组
const arr = [10,0,2];
arr.sort() // 0 10 2
竟然是先转换成String然后再排序的,那这个sort怎么放心用呢?
const arr = [10,0,2];
const newarr = […Uint8Array.from(arr).sort()]; // 0 2 10
Uint8Array // -255-255 Int8Array //0-255
Uint16Array //-65535-65535 Int16Array //0-65535
Uint32Array,Int32Array
Float32Array,Float64Array // 不用加U也可设置负数
使用函数式编程可以提高渲染效率,因为它没有状态,没有实例,并且它是一个组件可复用。下面用例展示了如何使用函数式组件。
// 子组件
<template functional>
<div v-example v-on="listeners">{{props.msg}}</div>
</template>
// 父组件
<list @click="handleClick" :msg="msg"></list>
handleClick() {
// eslint-disable-next-line no-debugger
debugger;
this.msg = 'aaa';
}
<template functional>
<div class="x" :class="[data.class, data.staticClass]" v-example v-on="listeners" :style="data.staticStyle">{{props.msg}}</div>
</template>
<template functional>
<div class="x" :class="[data.class, data.staticClass]" v-example>
{{props.msg}}
<component :is="injections.components.Pane"/>
<button v-on="listeners">action</button>
</div>
</template>
<script>
import Pane from './Pane';
export default {
inject: {
components: {
default: {
Pane,
}
}
}
}
</script>
<template functional>
<div>
{{$options.setContent(props.msg)}}
</div>
</template>
<script>
export default {
setContent(val) {
return val + 'sldkflkjdf';
}
}
</script>
此处收集一些代码性能提升方面的细节,持续更新
str+= ‘one’ + ‘two’浏览器运行逻辑
优化: str = str + ‘one’ + ‘two’;
结果少了一步创建临时字符串的过程,所以速度加快,若str = ‘one’ + str + ‘two’则优化无效
尾调用优化
// 优化后和优化前对比
function factorial(n) {
function fact(n, res) {
if(n<2) return res;
return fact(n-1,n*res);
}
return fact(n,1);
}
function _factorial(n) {
if (n===1) return 1;
return n*_factorial(n-1);
}
原理:优化前的递归要为每次调用开辟一个帧栈,优化后可以重用fact(n,1)这个帧栈,减小空间复杂度。