Ringo

这一次,彻底弄懂 JavaScript 执行机制

时间秒杀一切 提交于 2020-11-24 03:33:46
不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: javascript是按照语句出现的顺序执行的 看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的: let a = '1' ; console .log(a); let b = '2' ; console .log(b); 然而实际上js是这样的: setTimeout( function ( ) { console .log( '定时器开始啦' ) }); new Promise ( function ( resolve ) { console .log( '马上执行for循环啦' ); for ( var i = 0 ; i < 10000 ; i++){ i == 99 && resolve(); } }).then( function ( ) { console .log( '执行then函数啦' ) }); console .log( '代码执行结束' ); 依照js是按照语句出现的顺序执行这个理念,我自信的写下输出结果: //"定时器开始啦" //"马上执行for循环啦" //

这一次,彻底弄懂 JavaScript 执行机制

青春壹個敷衍的年華 提交于 2020-11-24 03:30:43
△ 是 新朋友 吗?记得先点 web前端学习圈 关注我哦~ 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还不懂,可以揍我。 不论你是javascript新手还是老鸟,不论是面试求职,还是日常开发工作,我们经常会遇到这样的情况:给定的几行代码,我们需要知道其输出内容和顺序。因为javascript是一门单线程语言,所以我们可以得出结论: javascript是按照语句出现的顺序执行的 看到这里读者要打人了:我难道不知道js是一行一行执行的?还用你说?稍安勿躁,正因为js是一行一行执行的,所以我们以为js都是这样的: let a = '1'; console.log(a); let b = '2'; console.log(b); 然而实际上js是这样的: setTimeout(function(){ console.log('定时器开始啦') }); new Promise(function(resolve){ console.log('马上执行for循环啦'); for(var i = 0; i < 10000; i++){ i == 99 && resolve(); } }).then(function(){ console.log('执行then函数啦') }); console.log('代码执行结束'); 依照 js是按照语句出现的顺序执行

数组(Array)和切片(Slice)

别说谁变了你拦得住时间么 提交于 2020-04-06 23:12:10
一个切片是一个数组片段的描述。它包含了指向数组的指针、片段的长度和容量(片段的最大长度) Array和Slice的区别 : Array是值类型,固定长度,大小是类型的一部分,当一个数组变量被赋值或者被传递的时候,实际上会复制整个数组。而Slice在新元素加入的时候可以增加长度(增长到容量的上限) slice 一个切片是一个数组片段的描述。它包含了指向数组的指针,片段的长度和容量(底层数组的长度)。 定义数组: <!-- lang: cpp --> var a [32]byte var b [5] struct { x, y int32 } //记录类型的数组 var c [1000]*float64 //数组元素是指向浮点型的指针 var d [3][5]int //二维数组 var e [2][2][2]float64 // 三维数组,跟这个一样 [2]([2]([2]float64)) //也可以直接赋值,无需指定数据长度, //变量声明中的...相当于指定了数组的长度 var p [6]int = [...]int{2, 3, 5, 7, 11, 13} var p = [...]int{2, 3, 5, 7, 11, 13} p := [...]int{2, 3, 5, 7, 11, 13} //上面定义的p相当于类型[6]int 定义Slice: <!-- lang: