JavaScript 基本语法及面试注意点

发表于:2020-6-29 09:10

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:nlzly    来源:掘金

  1. 表达式和语句
  表达式一般都有值,语句可能有值也可能没有,语句一般会改变环境(声明、赋值),但这些都不是绝对的。
  1 + 2 表达式值为 3
  console.log 表达式的值为函数本身
  add(1, 2) 表达式的值为函数的返回值
  console.log(3) 表达式的值为 undefined,打印3
  var a = 1 是一个语句,值为 undefined
  2. 标识符的规则
  第一个字符可以是 Unicode字母、$、下划线(_)或中文
  后面的字符,除了上述字符,还可以有数字
  变量名是标识符
  JavaScript 大小写敏感
  3. 注释
  好的注释:告诉你为什么要这样写
  烂的注释:告诉你写了什么
  4. if else 语句
// 打印结果是什么?
var a = 1;
if(a === 2)
console.log(a);
console.log('a等于2');
// 结果打印 a等于2,因为 if 语句省略花括号时,只有一句
// 打印结果是什么?
var a = 1;
if(a === 2)
console.log(a), console.log('a等于2');
// 结果什么也不打印,因为逗号表示语句未结束
// 前端常用 && 和 || 代替 if 语句
a = a || 100;
// 等同于以下语句
if(a) {
a = a;
} else {
a = 100; // 保底值
}
window.f1 && console.log('不存在');
false && 3 || true && 4;
/* 结果为4。
  (1) 因为与、或、非运算优先级  ! > && >|| ,所以先执行两边的 && 运算,最后执行 || 运算。
  (2) && 运算,左边表达式判断是 false,则返回左边表达式的值,否则返回右边表达式的值。
  false && 3 结果为 false。true && 4结果为4。
  (3) || 运算,左边表达式判断是 true,则返回左边表达式的值,否则返回右边表达式的值。*/
  5. while / for 语句
  for 循环:可以在很明确循环次数上去做内容
  while 循环:不明确循环次数,也可以做。场景:如猜数字
  do…while:至少会执行一次
// 是否会死循环?
var a = 0.1;
while(a != 1) {
console.log(a);
a = a + 0.1;
}
// 会死循环。因为浮点数相加过程中逐渐不精确,无法到达1
// 执行完语句后 i 为多少?
for(var i = 0; i < 5; i++) {
console.log(i);
}
// i = 5
// 打印结果是什么?
for(var i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i);
}, 0)
}
// 打印 5 次 5。
// for 循环先执行,每次执行把定时器放到事件队列里。
// 主线程 for 循环执行完了,才会执行事件队列里的。
// 希望 5次按顺序打出数字,将 var 改为 let 即可。
// 几秒打出几?
for(var i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i);
}, 1000*i)
}
// 0 秒输出一次 3,1 秒输出一次3, 2 秒输出一次 3。
  6. break / continue
  break 和 continue 跳出最接近的循环,对循环外的循环没有影响。
  7. label 语句
  语法如下
foo: {
console.log(1);
break foo;
console.log('本行不会输出');
}
console.log(2);
// 打印结果 1 和 2
// 以下是什么?
{
foo: 1;
}
// 是 label,值为1
// 以下是什么?
var a = {
foo: 1
}
// 是对象

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号