, 5 Go, , . Go . , , , Go.
, Go. , , , , .

, Go JavaScript, Go. , . , JavaScript, , .
JavaScript . - , . . JavaScript , . . JS .
var sb = new ArrayBuffer(4)
var intArr = new Int32Array(sb)
intArr[0] = 1 << 16
// 65536
intArr[0]
// 65536
— , : . , .
, JavaScript , .
Int32Array
Int16Array
, , , :
var sb = new ArrayBuffer(4)
var intArr = new Int32Array(sb)
intArr[0] = 1 << 16
// 65536
intArr[0]
// 65536
//
var shortArray = new Int16Array(sb)
shortArray[0]
// 0
shortArray[1]
// 1
: « , ? — , ?». : «, . ».
. , , , , :
var shortArr = new Int16Array(1)
var c = shortArr[0] = 1 << 15 // :
c == shortArr[0]
// false
shortArr[0]
// -32768
c
// 32768
, JavaScript, , , .
(
%
) . , :
3.14 % 5
// 3.14
13.14 % 5
// 3.1400000000000006
, , , « ». , . JavaScript :
[-2, -7, 0.0000001, 0.0000000006, 6, 10].sort()
// [-2, -7, 10, 1e-7, 6, 6e-10]
:
(1,2,3,4,5,6) === (2,4,6)
true
, , , . . , , , . JavaScript , :
var a = "41"
a += 1
// 411, , , .
var b = "41"
b -=- 1
// 42,
, ( ). , , 0, — 1. , , , .
, JavaScript — , , . , JavaScript Twitter.
,
??
,
:
~~!![[]]||__``&&$$++<<((""??''))**00==ಠಠ--//\\
// 1
banana
?
:
('b'+'a'++'a'+'a').toLowerCase()
// Uncaught SyntaxError: Invalid left-hand side expression in postfix operation
('b' + 'a' + + 'a' + 'a').toLowerCase()
// "banana"
«»? JavaScript
:
// -
input ?? obj?.key ? 'yes' : 'no'
— .
. JavaScript ,
:
var re = /a/g
re.test('ab')
// true
re.test('ab')
// false
re.test('ab')
// true
JS . :
{property: "value"} && {property: "value"}
// {property: "value"}
Date() && Date()
// "Wed Apr 1 2020 00:01:00 GMT+0100 (Central European Standard Time)"
Date() && {property: "value"}
// {property: "value"}
{property: "value"} && Date()
// Uncaught SyntaxError: Unexpected token '&&'
, :
typeof([1][0])
// number
for(let i in [1]){console.log(typeof(i))}
// string
, . , , :
const x={
i: 1,
toString: function(){
return this.i++;
}
}
if(x==1 && x==2 && x==3){
document.write("This will be printed!")
}
, JavaScript-, , DOM:
document.all
// HTMLAllCollection(359) [html.inited, head, …]
document.all == true
// false
document.all == false
// false
. , . - — .
. JS-:
(function({substr}){return substr.call})("")
// function call()
var x = (function({substr}){return substr.call})("")
// undefined
x.name
// "call"
x + ""
// "function call() {
// [native code]
// }"
typeof x
// "function"
x("this is a string")
// TypeError: Function.prototype.call called on incompatible undefined
:
(function(){return this}.call(1)) == (function(){return this}.call(1))
// false
:
, , -, , JavaScript.
, , , : .
JavaScript , , , — , , , . , , , JavaScript .
JavaScript Go —
, 3:
for (i = 1; i <= 2; ++i) {
setTimeout(function(){
console.log(i);
}, 0);
}
, , , :
console.log(0)
setTimeout(_ => console.log(1), 0)
requestAnimationFrame(_ => console.log(2))
Promise.resolve().then(_ => console.log(3))
console.log(4)
// 0
// 4
// 3
// 2
// 1
, , , «-», «-» , .
, , JavaScript. ?
, .
codediodeio.
// :
const start = Date.now();
function log(v){console.log(`${v} \n Elapsed: ${Date.now() - start}ms`);}
// ,
function doWork(){
for(let i = 0; i < 1000000000; i++); //
return 'work done';
}
log('before work');
doWork();
log('after work');
// before work
// Elapsed: 0ms
// after work
// Elapsed: 624ms
, .
:
function doWork(){
return new Promise((resolve, reject) => {
for(let i = 0; i < 1000000000; i++);
resolve('work done');
})
}
log('before work');
doWork().then(log);
log('after work');
// before work
// Elapsed: 0ms
// after work
// Elapsed: 637ms
// work done
// Elapsed: 637ms
. - , , , «-», , . , «-»:
function doWork(){
// `resolve`
return Promise.resolve().then(v => {
for(let i = 0; i < 1000000000; i++);
return 'work done';
})
}
log('before work');
doWork().then(log);
requestAnimationFrame(()=>{log('time to next frame')});
log('after work');
// before work
// Elapsed: 0ms
// after work
// Elapsed: 1ms
// work done
// Elapsed: 631ms
// time to next frame
// Elapsed: 630ms
, , . . . , , - , , , .
— - , - : , JavaScript, . , async/await , . , . , , ,
fetch
. , , .
?
- — . — , JavaScript .
- : , , , — , ,
postMessage
. . , ,
MDN. ? , , — , . ,
, . —
?
JavaScript , , , . ? .
postMessage MessageChannel (
chan
), . , « », , . .
- , - , , , - - ,
SharedArrayBuffer. , ,
.
Mutex
,
select
,
WaitGroup
. — (
). ? API ,
!
, , ‽ ( — , JavaScript).
JavaScript — , , : , , . , JS , - , , « ». , JavaScript, . ?
! JavaScript , ?
