JS进阶笔记1

简介: JS进阶笔记1

一、JavaScript代码调试


  • 代码调试:检查代码的执行路径和变量的值与你设计程序时期望的是否一致。


  • 在Chrome、Edge浏览器中调试


  • alert()


  • console.log():常用,Ctrl+Shift+I -> Console


  • 开发者工具:设断点, Ctrl+Shift+I -> Sources


image.png


debugger 关键词


  • debugger 关键词会停止 JavaScript 的执行,并调用(如果有)调试函数。


image.png


二、JavaScript语言


2.1 语法特点


  • 弱类型语言:变量声明时不指定类型,一个变量可以赋不同数据类型的值


  • 区分大小写:Student与student是两个不同的标识符


  • 变量命名规范:一般全部小写,多个单词,从第二个单词开始首字母大写


  • 关于语句结束后的分号:可选,但建议加上


2.2 变量的声明


  • 使用var或let关键字


  • var关键字:传统方式,只有全局作用域和函数作用域


  • let关键字:现代JavaScript中的方式


  • 两者的区别:


  • let声明的变量只在代码块内有效,实现块级作用域,而var声明的变量没有块级作用域,只有函数作用域和全局作用域


  • var声明的变量存在变量提升,而let声明的变量不存在变量提升


  • 作用域


  • 变量的作用域(Scope),指变量在脚本代码中可读、写的有效范围


  • ECMAScript 6之后,变量的作用域有全局作用域、函数作用域和块级作用域,ECMAScript 6之前,无块级作用域


  • var声明的变量只有全局作用域和函数作用域,let声明的变量有全局作用域、函数作用域和块级作用域


  • 因var存在变量提升,所以var变量的全局作用域指整个页面的JavaScript代码,函数作用域指整个函数;而let和const不存在变量提升,故全局作用域指声明语句开始到整个页面脚本代码,函数和块级作用域指从声明语句到函数/块结束


  • 块级作用域例子
{
  let a = 10;
  var b = 1;
}
a // ReferenceError: a is not defined.
b // 1
---
if (true) {
  let test = true; // 使用 "let"
}
alert(test);       // Error: test is not defined
---
if (true) {
  var test = true; // 使用 "var" 而不是 "let"
}
alert(test);       // true,变量在 if 结束后仍存在
  • 函数作用域例子
function f1() {
    var a = 1;
    let b = 2;
}
console.log(a);
console.log(b);
// 报错,a和b均未定义
  • 变量提升:即变量可以在声明之前使用,值为undefined。
// 未声明变量,直接使用
console.log(foo); // 报错ReferenceError
---
// 使用var,先使用变量,后声明并赋值
console.log(foo); // 输出undefined
var foo = 2;
---
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
  • var声明提高到所属作用域的顶端:如var声明变量在任何函数之外,则变量的作用域会提升到整个代码的最高处(全局变量);在函数体内使用var声明变量,其作用域会被提升至所在函数。


  • 注意:


  • 1.仅声明被提升,赋初值仍在原位置
  • 2.变量提升不会跨script块


  • let声明的变量不存在变量提升


  • 使用const声明常量


  • 常量在脚本代码整个运行过程中保持不变
  • 使用const声明常量时,必需赋初值
  • const 常量名 = 值
  • 常量不能重复声明
const pi = 3.1415926;


相关文章
|
5天前
|
缓存 JavaScript 前端开发
【JavaScript 技术专栏】DOM 操作全攻略:从基础到进阶
【4月更文挑战第30天】本文深入讲解JavaScript与DOM交互,涵盖DOM基础、获取/修改元素、创建/删除元素、事件处理结合及性能优化。通过学习,开发者能掌握动态改变网页内容、结构和样式的技能,实现更丰富的交互体验。文中还讨论了DOM操作在实际案例、与其他前端技术结合的应用,助你提升前端开发能力。
|
5天前
|
JavaScript 前端开发 算法
JavaScript 中的 if 判断:深入理解、实战应用与进阶技巧
【4月更文挑战第7天】探索 JavaScript 中的 if 判断语句,它是构建逻辑清晰程序的基础。了解其概念、语法、应用示例及编程技巧,包括条件控制、else if 结构、三目运算符。注意条件表达式简洁性,避免 falsy 值陷阱,利用逻辑运算符优化,并减少 if 嵌套。实践这些技巧将提升编程能力和代码质量。
30 0
|
5天前
|
数据采集 Web App开发 JavaScript
JavaScript爬虫进阶攻略:从网页采集到数据可视化
JavaScript爬虫进阶攻略:从网页采集到数据可视化
|
5天前
|
JavaScript 前端开发
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
JavaScript随手笔记 --- 对数据进行判断最大位数是否超过八位
|
5天前
|
JavaScript 前端开发
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式
|
5天前
|
JavaScript 前端开发
JavaScript 中运算符优先级:理解规则、实战应用与进阶技巧
【4月更文挑战第6天】了解 JavaScript 运算符优先级是编写清晰无误代码的关键。优先级规则决定了运算的顺序,从高到低包括一元、乘性、加性、关系、相等性等运算符。掌握优先级能避免逻辑错误,例如在表达式 `a * b + c` 中,乘法先于加法执行。实际应用中,使用括号可以明确运算顺序,提高代码可读性。注意避免混淆优先级,如赋值与比较操作。利用优先级简化逻辑判断,遵循编码规范,提升编程技能。通过不断学习和实践,加深对运算符优先级的理解,优化代码质量。
21 0
|
5天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(六)
JavaScript高级笔记-coderwhy版本
75 0
|
5天前
|
JavaScript 前端开发 Java
JavaScript高级笔记-coderwhy版本(一)
JavaScript高级笔记-coderwhy版本
35 0
JavaScript高级笔记-coderwhy版本(一)
|
5天前
|
存储 JSON JavaScript
JavaScript高级进阶(更新中)-javascript-gao-ji-jin-jie--geng-xin-zhong-(三)
JavaScript高级进阶(更新中)-javascript-gao-ji-jin-jie--geng-xin-zhong-
40 1
|
5天前
|
JavaScript 前端开发 算法
JavaScript高级进阶(更新中)-javascript-gao-ji-jin-jie--geng-xin-zhong-(二)
JavaScript高级进阶(更新中)-javascript-gao-ji-jin-jie--geng-xin-zhong-
29 0