JavaScript的详解与使用

这篇具有很好参考价值的文章主要介绍了JavaScript的详解与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们接着上篇文章继续学习后面的知识

上一张的练习题文章来源地址https://www.toymoban.com/news/detail-654051.html

字符串转json

//将问号后面的字符串转换为对象
		let str = "http://item.taobo.com/item.html?a=1&b=2&c=&d=xxx&e";
        let obj = {};
        let s1 = str.substring(str.indexOf('?') + 1).split('&');
        for (let i = 0; i < s1.length; i++) {
            let arr = s1[i].split('=');
            obj[arr[0]] = arr[1];
        }
        console.log(obj);

转驼峰

 //封装一个函数,将font-size转换为fontSize
        function toTf(sty) {
            // 分割字符串转数组
            let arr = sty.split('-');
            let str = '';
            // 循环给除了第一个单词外的首字母替换成大写并拼接
            for (let i = 1; i < arr.length; i++) {
                str += arr[i].replace(arr[i].substring(0, 1), arr[i].substring(0, 1).toUpperCase());
            }
            // 拼接第一个
            return arr[0] + str;
        }
        let str = prompt('请输入一个非驼峰的东西');
        alert(toTf(str));

字符串去重并进行排序

    // 把下面的字符串去重, 并去除掉特殊字符按照数字在前字母在后的顺序排序字符串, 最终返回12345fdsarg
        // var str = '1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs';
        let str = '1233fddfd&3434fdsaff&454545&4545444rfdsfds&545gdsgs';
        let s = '';
        let n = '';
        for (let i = 0; i < str.length; i++) {
            // 既去重又取数字
            if ((str[i] >= 0 && str[i] <= 9) && n.indexOf(str[i]) == -1) {
                n += str[i];
                // 既去重又取字母
            } else if ((str.charCodeAt(i) >= 97 && str.charCodeAt(i) <= 122) && s.indexOf(str[i]) == -1) {
                s += str[i];
            }
        }
        console.log(n + s);

设置获取固有属性

//在原生js中固有属性一般为class id type value checked等等
//我们可以使用className和input.value等获取固有属性 设置我们可以直接点的形式直接赋值

设置获取自定义属性

//自定义属性在我们开发中是比较常见的
//一种是直接设置的 比如index属性 这种方式不在浏览器标签中显示 但是可以使用,可以直接获取
        let div = document.querySelector('.box');
        div.index = 1;
        div.id = '111';
        console.log(div.index);
        console.log(div.id);
//另外一种方式是使用setAttribute()设置自定义属性 但是获取必须使用配套的getAttribute()来进行获取
        let div = document.querySelector('.box');
        // 添加自定义属性
        div.setAttribute('index', 1);
        // 获取自定义属性
        console.log(div.getAttribute('index'));

正则表达式的使用

//一般我们利用new RegExp 和字面量 // 两种方式创建正则表达式
//一般使用正则表达式的时候 我们可以在网上找些表达式进行使用
 		let str = 'hell o'
        // 使用正则
        let reg = /\s/
        let result = str.replace(reg, "")
        console.log(result);


使用相关的API
修饰符:
	g:全局匹配
	i:不区分大小写
检索方法:
	test():满足为true,不满足为false
	exec():满足会返回一个数组 不满足则返回一个null
	match()    效果等同于exec()    满足会返回一个数组   不满足返回null
	search()  查找字符串某个元素 找到的返回索引 找不到返回为-1 等同于字符串中的indexOf()
转义符:
	\:当我们需要一些运算符的时候 我们可能没办法直接使用 但是我们可以利用转义符进行匹配,从而满足我们的需求
元字符:
	[a-z]:小写英文字符a-z
	[A-Z]:大写英文字符A-Z
	[0-9]:数字0-9
	/\d/:数字0-9
	/\D/:非数字
	/\w/:数字字母(大小写)和_
	/\W/:除了 数字字母(大小写)和_
	/\s/:空格  tab
	/\S/:出了空格 tab
	^:以xxx开头
	$:以xxx结尾	
	?:匹配01*:匹配0以上
    +:匹配1个以上
    {m,n}:范围个数    包括m  n
    常见的表达式就是上面这些,如果我们需要使用的正则表达式进行处理事件的话,我们可以在**Vscode软件中下载any-rule插件** 可以快速帮我们找出需要的正则

JS对DOM节点的操作

//创建节点
let div = document.createElement('div')
//追加节点
appendChild(div) //在末尾添加
inserBefore(div) //在前面添加
removeChild(div) //移除节点
replaceChild(div) //替换节点
cloneNode(div) //克隆节点 里面是true的话是深克隆 默认是浅克隆

函数高级

回调函数callback()
  // function a(c) {
  //     console.log(2);
  //     // console.log(c);
   //     c && c();
  // }

        // function b() {
        //     console.log(1);
        // }
        // a(b);
        // 回调函数
        // 把函数当成参数传给另个函数  不是我们直接调用的  系统调用的
        
回调函数会带来回调地狱的问题

//立即执行函数
()()
   // 立即执行函数    this指向window    匿名函数    每一个立即执行函数结束都要加分号
        // (function(形参,...){执行语句})(实参);   (function(形参){}(实参))
        // (function(a) {
        //     console.log(a);
        // })(10);

闭包函数

 		function fun() {
            let a = 1;

            function fun1() {
                console.log(a);
            }
            fun1();
            // a = null;
        }
        fun();
        // 闭包:函数嵌套函数  内部函数可以访问外部函数中的变量
        // 优点:扩大变量的使用范围    变量私有化
        // 缺点:内存泄露   变量一直存在内存中 不会被垃圾回收机制回收掉
        // 解决:引用计数   标记清除

闭包常见案例
  function fun(n, o) {
            console.log(o);
            return {
                fun: function(m) {
                    return fun(m, n);
                }
            }
        }
        var a = fun(0); //undefined
        a.fun(1); //0
        a.fun(2); //0
        a.fun(3); //0

递归函数

    // 递归函数  
        // 自己调自己
        // 递归调用, 是函数本身调用自己。 但是应用递归调用的时候, 我们有必要设置一个条件, 也就是if语句, 目的是能够让这个函数停下来, 否则程序将进入到死循环。
        // 阶乘
        // !6
        // 1*2*3*4*5*6   
        // function fn(n) {
        //     if (n <= 1) return 1;
        //     return n * fn(n - 1)
        // }

        // console.log(fn(6));
        // 兔子函数
        // 有一对兔子, 从出生后第3个月起每个月都生一对兔子, 小兔子长到第三个月后每个月又生一对兔子, 假如兔子都不死, 问每个月的兔子总数为多少? 1. 程序分析: 兔子的规律为数列1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144…
        // 解析: 定义一个函数, 完成计算每个月兔子总数的功能。
        // function fun(n) {
        //     if (n == 1 || n == 2) {
        //         return n = 1;
        //     }
        //     return fun(n - 2) + fun(n - 1);
        // };
        // console.log(fun(12));

防抖与节流

    // 防抖
        // 非立即执行
        // 在规定n秒内只执行一次,如果频繁触发事件则重新计算时间
        // 窗口缩小放大事件
        // 浏览器搜索

        // document.querySelector('div').onmousemove = debounce(fun, 1000);

        // function fun() {
        //     console.log(1);
        // }

        // function debounce(f, time) {
        //     let timer;
        //     return function() {
        //         if (timer) {
        //             clearTimeout(timer);
        //         }
        //         timer = setTimeout(f, time)
        //     }
        // }

        // 立即执行
        // function debounce(f, time) {
        //     let timer;
        //     return function() {
        //         if (timer) {
        //             clearTimeout(timer);
        //         }
        //         //undefined   null   0   ''   false   NaN 
        //         let flag = !timer; //true
        //         // 异步
        //         timer = setTimeout(function() {
        //             timer = null;
        //         }, time);
        //         if (flag) f();
        //     }
        // }

        // 节流
        // n秒内只执行一次
        // 点击

        document.querySelector('div').onmousemove = throttle(fun, 2000);

        function fun() {
            console.log(1);
        }
        // 时间戳
        // function throttle(f, wait) {
        //     let pervious = 0;
        //     return function() {
        //         // 获取当前的事件戳
        //         let now = Date.now();
        //         // 获取时间戳的差值  并进行判断   只要差值大于规定的事件  执行函数   并重新更新事件     反之 就不执行
        //         if (now - pervious > wait) {
        //             f();
        //             pervious = now;
        //         }
        //     }
        // }

        // 定时器
        // function throttle(f, wait) {
        //     let timer;
        //     return function() {
        //         if (!timer) {
        //             timer = setTimeout(function() {
        //                 timer = null;
        //                 f();
        //             }, wait)
        //         }
        //     }
        // }

        // 总结:
        // 防抖: 触发高频事件后n秒内函数只会执行一次, 如果n秒内高频事件再次被触发, 则重新计算时间
        // 节流: 高频事件触发, 但在n秒内只会执行一次, 节流会稀释函数的执行频率

到了这里,关于JavaScript的详解与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开发语言漫谈-JavaScript

           JavaScript、Java名字很相近,但它们没有任何亲缘关系,是由不同公司开发的编程语言。Java由Sun公司(后被Oracle收购)开发,JavaScript最初是由Netscape公司开发的(当年浏览器的霸主)。JavaScript最初的名字是 LiveScript,Netscape将其命名为 JavaScript,无非是蹭 Java流量。当

    2024年04月16日
    浏览(49)
  • 大型医院云HIS系统:采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发 融合B/S版电子病历系统

    一套医院云his系统源码 采用前后端分离架构,前端由Angular语言、JavaScript开发;后端使用Java语言开发。融合B/S版电子病历系统,支持电子病历四级,HIS与电子病历系统均拥有自主知识产权。 文末卡片获取联系! 基于云计算技术的B/S架构的医院管理系统(简称云HIS),采用前后

    2024年02月03日
    浏览(48)
  • 建站系列(五)--- 前端开发语言之HTML、CSS、JavaScript

    建站系列(一)— 网站基本常识 建站系列(二)— 域名、IP地址、URL、端口详解 建站系列(三)— 网络协议 建站系列(四)— Web服务器之Apache、Nginx 建站系列(五)— 前端开发语言之HTML、CSS、JavaScript 建站系列(六)— 后端开发语言 建站系列(七)— 常用前后端框架

    2024年02月09日
    浏览(52)
  • JavaScript系列从入门到精通系列第二十篇:使用工厂方法创建JavaScript对象,JavaScript构造函数详解,JavaScript类概念的介绍

    文章目录 一:使用工厂方法创建对象 1:原始写法 2:工厂方式 3:结果验证  二:构造函数 1:什么是构造函数 2:构造函数和普通函数的区别 3:构造函数的执行流程 三:类 1:什么是类 2:如何检查一个对象是否是个类的实例 3:Object的地位 四:构造函数修改 1:重大问题

    2024年02月08日
    浏览(40)
  • JavaScript的详解与使用

    我们接着上篇文章继续学习后面的知识 上一张的练习题 字符串转json 转驼峰 字符串去重并进行排序 设置获取自定义属性

    2024年02月12日
    浏览(24)
  • Javascript if 语句使用详解

    目录 Javascript if 语句使用详解 一、if语句 二、if……else语句 三、if……else if语句 if语句是使用最为普遍的条件选择语句,每一种编程语言的if语句都差不多。if语句类型共有3种: (1)if语句(单向选择); (2)if……else语句(双向选择); (3)if……else if语句(多向选择

    2024年04月29日
    浏览(45)
  • 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用

    🐚 作者: 阿伟 💂 个人主页: Flyme awei 🐋 希望大家多多支持😘一起进步呀! 💬 文章对你有帮助👉关注✨点赞👍收藏📂 第一种: var 数组名 = new Array(); 创建一个空数组 第二种: var arr2 = new Array(10); 创建一个定长为10的数组 第三种 var arr3 = new Array(a,b,c); 创建时直接指定元素值

    2023年04月08日
    浏览(59)
  • (自己动手开发自己的语言练手级应用)JSON(JavaScript Object Notation) 产生式(BNF)

     写自己的开发语言时,很多人都会拿JSON当第一个练习对象 开源net json FJSON 解析工具 https://dbrwe.blog.csdn.net/article/details/107611540?spm=1001.2014.3001.5502 以上是JSON的简化产生式表示形式。其中, json 是最顶层的规则,可以是一个对象或一个数组。 object 表示一个对象,由一对大括号

    2024年02月10日
    浏览(50)
  • JavaScript前端中的伪类元素before和after使用详解

    在前端开发中,伪类是一种让你可以选择元素的某个状态或位置的 CSS 选择器。其中, :before 和 :after 伪类允许你在一个元素之前或之后插入内容。 :before 和 :after 伪类创建的元素是不在 HTML 文档中的,它们是通过 CSS 生成的。可以用它们来在一个元素的前面或后面插入一些内

    2024年02月14日
    浏览(39)
  • 细说JavaScript函数(JavaScript函数详解)

    函数的作用就是封装一段JavaScript代码,让开发者可以通古简单的方式使用这段代码 一、函数的分类 在几乎所有的编程语言中,都有函数这一概念,并且没中语言本身都继承了丰富的函数,这类函数被称为系统函数或者内置函数,系统函数在语言设计时就已经定义好了,开发

    2024年02月01日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包