JS进阶笔记3

简介: JS进阶笔记3

2.4 函数


函数声明方法一:有名函数


function 函数名([参数列表]) {
  函数体;
  [return [表达式];]
}


函数声明方法二:函数表达式(匿名函数)


--不需要函数名
--常用于定义事件的回调函数
变量名 = function ([参数列表]) {
  函数体;
  [return [表达式];]
}


例:匿名函数作为回调函数


<script>
  let btns = document.querySelectorAll("button");
  btns.forEach(function (btn) {  // 匿名函数
    btn.addEventListener("click", function () {    // 匿名函数
      let bgColor = this.dataset.bgColor;
      bind = setTimeout(function () {     // 匿名函数
        console.log(bgColor);
        document.body.style.backgroundColor = bgColor;
      }, 1000, bgColor);
    });
  });
</script>


例:匿名函数作为表达式赋值给变量


// 定义匿名函数并作为表达式赋值给变量
var fn = function(name) {
  console.log(`Hello ${name}`); // 字符串模板
};
// 通过变量名调用匿名函数
fn('VUE');  // Hello VUE


函数参数:


  • 参数列表可选,不指定类型,传递时可接受任意类型数据,调用时如实参未指定,默认值为undefined


  • 从ES2015开始:可为参数指定默认值


image.png


函数中的this


  • JavaScript中的this通常指向当前对象
  • 当前对象指调用当前正在执行的函数(方法)的对象
  • 在全局环境中:
  • 非严格模式下,this指向window(浏览器环境)
  • 严格模式下,this为undefined
  • setTimeout和setInterval中延迟调用的方法都在全局环境中执行


定义函数方式三: Lambada 表达式


  • Lambada 表达式(箭头函数):比函数表达式更加简洁,不绑定this、arguments、super


  • 语法形式1:(参数1, 参数2, …, 参数N) => { 函数声明; }
var f = (num1, num2) => { 
  return num1*num2 
};
console.log(f(3, 4)); // 12
  • 箭头函数-语法形式2:(参数1, 参数2, …, 参数N) => 表达式(单一)
var f = (num1, num2) => num1*num2;
console.log(f(3, 4)); // 12
  • 箭头函数-语法形式3:单一参数 => {函数声明}
var f = num => num*num;
console.log(f(3)); // 9
  • 箭头函数-语法形式4:() => {函数声明}  // 无参数
var f = () => 'hello world';
console.log(f()); // hello world


常用内置函数


image.png

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