观察下面的代码:
const name = 'Miriam';const greeting = `Hello, my name is ${name}!`;console.log(greeting);// "Hello, my name is Miriam!"这段代码:
声明确一个叫做 name 的字符串常量
声明确另一个叫做 greeting 的字符串常量(并利用了 name 常量的值)
将 greeting 常量输出到 JavaScript 控制台中。
我们应该注意的是,现实上欣赏器是按照我们誊写代码的次序一行一行地实行步伐的。欣赏器会等候代码的解析和工作,在上一行完成后才会实行下一行。如许做是很有须要的,由于每一行新的代码都是创建在前面代码的基础之上的。
这也使得它成为一个同步步伐。
究竟上,调用函数的时间也是同步的,就像如许:
function makeGreeting(name) { return `Hello, my name is ${name}!`;}const name = 'Miriam';const greeting = makeGreeting(name);console.log(greeting);// "Hello, my name is Miriam!"在这里 makeGreeting() 就是一个同步函数,由于在函数返回之前,调用者必须等候函数完成其工作。
一个耗时的同步函数
假如同步函数需要很长的时间怎么办?
当用户点击“天生素数”按钮时,这个步伐将利用一种非常低效的算法天生一些大素数。你可以控制要天生的素数数量,这也会影响操作需要的时间。
<label for="quota">素数个数:</label><input type="text" id="quota" name="quota" value="1000000"><button id="generate">天生素数</button><button id="reload">重载</button><div id="output"></div>function generatePrimes(quota) { function isPrime(n) { for (let c = 2; c <= Math.sqrt(n); ++c) { if (n % c === 0) { return false; } } return true; } const primes = []; const maximum = 1000000; while (primes.length < quota) { const candidate = Math.floor(Math.random() * (maximum + 1)); if (isPrime(candidate)) { primes.push(candidate); } } return primes;}document.querySelector('#generate').addEventListener('click', () => { const quota = document.querySelector('#quota').value; const primes = generatePrimes(quota); document.querySelector('#output').textContent = `完成!已天生素数${quota}个。`;});document.querySelector('#reload').addEventListener('click', () => { document.location.reload()});耗时同步函数的题目