博客列表 >Js的基础语法

Js的基础语法

心
原创
2021年01月07日 18:52:42779浏览

实例演示变量与常量的区别; 2. 函数与匿名函数的区别 3. 箭头函数的参数特征 4. 闭包原理与实现并演示它 5. 四种高阶函数,全部实例演示,并理解回调和纯函数是什么,写出你的答案

js 的引用

  • js 内联脚本,事件属性
  1. <h1>你好世界</h1>
  2. <button onclick="document.querySelector('h1)".classList.toggle('active');">点击</button>
  • 内部脚本,只适合在当前文档中使用script标签
  1. <h1>世界你好</h1>
  2. <button onclick="activeTitle()">点击</button>
  3. <script>
  4. function activeTitle(){
  5. document.querySelector('h1').classList.toggle('active');
  6. }
  7. </script>
  • 外部脚本,使用script标签 src属性,可以共享

变量与常量

  • 变量,使用 let 声明
    1.let 第一次赋值就是初始化
    2.再次赋值是更新操作,覆盖上一次的值
  1. <script>
  2. // 声明
  3. let userName;
  4. console.log(userName);
  5. //声明时并初始化(第一次赋值);
  6. let itemName = "手机";
  7. console.log(itemName);
  8. // 更新
  9. userName = '世界';
  10. console.log(userName);
  11. </script>
  • 常量
    1.声明时必须初始化 const
    2.标识符: 字母,数字,下划线,$ 不能数字开头
    3.严格区分大小写,pass 和 Pass 不是同一个
    4.不能使用关键字可保留字

  • 命名方案
    1.驼峰式: userNmae,小驼峰
    2.帕斯卡:UserName ,大驼峰
    3.匈牙利:oBth,_sex,_salray
    4.js中推荐使用驼峰式,小驼峰,常量推荐 大写

  1. <script>
  2. //声明 const 必须给值
  3. const pass = '123';
  4. </script>

变量类型与类型转换

  • 原始类型,字符串,数值,布尔(真或假),undefined(没有赋值就是undefined),null
    1.使用 typeof 来查看数值类型
  1. <script>
  2. // 字符串
  3. let emali = "ade@qq.com";
  4. console.log(emali,typeof emali);
  5. // 数值
  6. let price = 123;
  7. console.log(price,typeof price);
  8. // 布尔
  9. let isEmpty = false;
  10. console.log(isEmpty,typeof isEmpty);
  11. // undefined
  12. let num;
  13. console.log(num,typeof num);
  14. //null
  15. let o = null;
  16. consoll.log(o,typeof null);
  17. if(o=== null) console.log("null");
  18. </script>
  • 引用类型:数组(Array.isArray()),对象(instanceof Object),函数(typof)
  1. <script>
  2. //数组
  3. let arr = [100,"手机",300];
  4. console,log(Array.isArray(arr));
  5. // 对象 变量赋值多个值的时候使用大括号就是对象
  6. let items = {
  7. id:100;
  8. name:'张三'
  9. price:'300';
  10. };
  11. console.table(items);
  12. console.log(items instanceof Object)
  13. //函数
  14. function show(){
  15. console.log(show,typeof show);
  16. }
  17. </script>
  • 相同类型的数据在一起运算,它的结果才有意义
    -“+” 字符串运算中表示链接,此时会自动的触发类型转换
    -“==”:非严格匹配,只检查值,而不检查类型
    -“===”:严格匹配,必须值和类型全部相同菜才返回true
  1. <script>
  2. // 会运算 结果
  3. console.log(100+100);
  4. // 字符 拼接
  5. console.log(100+"100");
  6. // "==" 返回 true
  7. console.log(100 == "100");
  8. // "===" 返回false
  9. console.log(100 === "100");
  10. </script>

函数提升与重写

  • 声明function,
    1.不管函数声明在什么地方,函数提升到顶部
    2.函数可以重写
    3.使用匿名函数,可以不被重写和提升
  1. <script>
  2. // 声明
  3. function getNmae(name){
  4. return "Welcome to" + name:
  5. }
  6. // 调用
  7. console.log(getName("shijie"));
  8. // 函数重写
  9. function getName(name){
  10. return "拥抱"+name;
  11. }
  12. //匿名函数
  13. let num = function (a,b){
  14. return a + b;
  15. }
  16. console.log(num(1,2));
  17. </script>

函数参数与返回值

  • 必选参数,必须都要赋值
    -…扩展参数,简化函数的调用参数
  • arguments 类数组:类数组其实就是对象
  • 属性为从0递增的正整数,且有length属性
  1. <script>
  2. //必选参数
  3. let sum = function(a,b){
  4. return a + b;
  5. };
  6. console.log(sum(1,2));
  7. //默认参数就是赋值
  8. let sum = function(a,b=2){
  9. return a + b;
  10. };
  11. console.log(sum(1));
  12. //多个参数
  13. let sum = function(a,b,c,d){
  14. return a + b + c + d;
  15. };
  16. console.log(sum(1,2,3,4));
  17. //...归内参数,简化函数的参数声明
  18. sum = function(...arr){
  19. return arr.reduce(function(p,c){
  20. return p + c;
  21. });
  22. }
  23. console.log(sum(1,2,3,4));
  24. // 简化数组
  25. let par = [1,2,3,4];
  26. console.log(par);
  27. //...扩展参数,简化函数的调用参数
  28. console.log(sum(...par));
  29. sum = function (q,b,c,d){
  30. return a+b+c+d;
  31. }
  32. console.log(sum(...par));
  33. </script>
  • 返回值
    -函数都是单值返回,如果想返回多个值,将结果封装到数组或对象中
  1. //返回数组
  2. let getItmes = function () {
  3. return [100,'你好',222];
  4. }
  5. console.log(getItmes());
  6. //返回对象
  7. let getItmes = function () {
  8. return {Id:100,name:'你好',price:222};
  9. }
  10. console.table(getItmes());

高阶函数

  • 高阶函数:使用函数为参数或者将函数作为返回值的函数
    -回调函数:把函数当作参数
    -偏函数:先把个别参数固定下来.简化声明
    -柯里化:一个一个传值。简化调用
    -纯函数:完全独立于调用调用上下文,返回值只能收到传入的参数影响
  1. <script>
  2. //回调函数:把函数当作参数
  3. document.addEventListener('click',function(){
  4. alert('hello');
  5. })
  6. // 偏函数
  7. let sum = function(a,b){
  8. return function(c,d){
  9. return a + b + C + d;
  10. }
  11. }
  12. let f1 = sum(1,2);
  13. console.log(f1(3,4));
  14. //柯里化函数
  15. sum = function(a){
  16. return function(b){
  17. return function(c){
  18. return function(d){
  19. } return a +b+c+d;
  20. }
  21. }
  22. }
  23. }
  24. let res = sum(1)(2)(3)(4);
  25. console.log();
  26. function getDate(){
  27. return Date.now();
  28. }
  29. console.log(getDate);
  30. // 纯函数
  31. function add(a,b)
  32. console.log(a+b);
  33. </script>

箭头函数

  • 箭头函数
    -箭头函数用来简化“匿名函数”的声明,function 可以省略 使用 + 来代替
    -如果只有一个参数,小括号都不要了 = 代替 function ()
    -如果没有参数,小括号不能省()
    -箭头函数没有原型属性prototype,不能当构造函数用
    -箭头函数中的this,始终与它的上下文绑定
  1. <script>
  2. let sum = function(a,b){
  3. return a+b;
  4. };
  5. console.log(sum);、
  6. // 简化匿名函数,两个值,可以省略 function 使用 = 来代替 调用时 (函数名())
  7. let sum = (a,b) => {
  8. return a+b;
  9. };
  10. console.log(sum);
  11. // 只有一个参数的时候,小括号都不要了,使用= 代替function ();
  12. let tips = str =>console.log(str);
  13. // 没有参数的时候 要使用()
  14. let tips = () => console.log(Success);
  15. console.log(tips());
  16. </script>

作用域和闭包

  • 作用域
    -全局 在函数外定义的函数
    -函数 可以使用全局,也有自己的额私用变量
    -块
  1. <script>
  2. // 全局作用域
  3. let site = "baidu";
  4. console.log(site);
  5. // 函数作用域
  6. function getSite(){
  7. let domain = "www.baidu.com";
  8. return site + domain;
  9. }
  10. console.log(getSite);
  11. // 块的作用域
  12. {
  13. let a = 1;
  14. const B = "Hello";
  15. }
  16. console.log(a,b);
  17. </script>
  • 闭包
    -自由变量:既不是函数参数变量,也不是私有变量,存在与函数调用上下文中
    -闭包:能够访问自由变量的函数,理论上讲,任何函数都是闭包
  1. <script>
  2. // 自由变量: num 就是自由变量
  3. let num = 100;
  4. function add(a,b){
  5. let t = 0;
  6. return t + a + b + num;
  7. }
  8. function a(){
  9. // 私有变量
  10. let n = 100;
  11. //返回的子函数就是闭包
  12. return function(){
  13. return n;
  14. }
  15. }
  16. //调用里面有子函数 (a()());
  17. console.log(a()()));
  18. function f1(){
  19. let a = 1;
  20. // a 相对于f1 是私有白变量,但是相对与返回的匿名函数就是一个自由变量
  21. return function (){
  22. return a++;
  23. };
  24. }
  25. let f2 = f1();
  26. // 调用f2()
  27. console.log(f2());
  28. </script>

立即执行函数

  • 立即执行函数:IIFE
    -声明完直接调用
  • 远古时代,js不支持块作用域
  1. <script>
  2. //立即执行函数
  3. function sum (a,b){
  4. console.log(a+b);
  5. }
  6. sum(10,20);
  7. //声明完 直接调用
  8. function (a,b){
  9. console.log(a+b);
  10. })(10,20);
  11. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议