JavaScript:快速入门

news2024/12/25 9:19:02

1. 数据类型

/**

         * 数据类型: number(包含整数、小数)

         *          string(字符串类型)

         *          boolean(布尔类型)

         *          object(对象类型)

         *          function(函数类型)

         * js中的数据类型为弱类型,定义时通通用var,弱类型不是没有类型,是赋值时再确定

         * 如:var i = 1 此时i为整形

         * 注意:

         * 1.定义的变量可以被重复使用,即使是不同类型也可以重复使用,因为类型在赋值时会重新确定

         * 2.变量声通通用var即可

         * 3.变量声明和Java一致

         * 4.语句结尾可以分号结尾也可以不用分号

         * 5.变量名严格区分大小写

         * 6.如果变量未声明会报错

         * 7.如果变量声明未定义会报undefined

        */

var i = 10.1;
       console.log(typeof i);
       i = "niubi";
       console.log(typeof i);
       i = new Object;
       console.log(typeof i);
       i = fun();
       consloe.log(typeof i);

2. 运算符 

/**

         * 运算符

         * 1.算术运算符:+ - * / %

         * 当 / 和 % 运算不违规时不会报错

         * 如 10 / 0 不报错最终显示结果Infinity

         * 如 10 % 0 不报错最终显示结果NaN

         * 2.关系运算符:> < >= <= == ===

         * 注意: == 比较时会如果数据类型不一致会尝试先将类型转为一致在进行比较

         *      === 比较如果数据类型不一致直接返回false

         * 3.复合运算符 += -= /= %= ++ --

         * 4.逻辑运算符: || &&

         * 5.位运算符: | &

         *

        */

console.log(10 / 0);//Infinity
       console.log(10 % 0);//NaN
       console.log('123' == 123);//true
       console.log('123' === 123);//false

 3. 流程控制

/**

         * 流程控制:分支结构

         * if、switch语句

         * if语句与Java区别:

         * 1.非空的字符串类型都会判断为true

         * 2.非0的数字判断结果都为true(包含小数)

         * 3.非空对象都会判断为true

         *

         * switch语句和Java中的switch几乎一致

        */

if ("false") {
        console.log("true"); //最终打印结果为true
       } else {
        console.log("false");
       }

 /**

         * 流程控制:循环结构

         * while语句和Java中的while几乎一致

         * for语句和Java中的for几乎一致

         *

         * 区别:forEach语句(增强for)

         * 1.js中的增强for不用冒号(:)用关键字(in)

         * 2.js中的var 变量名此时的变量名代表的是当前遍历到数据的下标不是里面的具体数据

        */

 //js中定义数组的语法和Java略有不同,用中括号即[内容],不是用大括号
       var arr = ["北京", "上海", "广州"];
       //增强for
       document.write("<ul>");//打印在浏览器窗口
       for (var index in arr) {
        document.write("<li>" +arr[index] + "</li>");
       }
       document.write("</ul>");

4. 函数

 /**

         * 函数:

         * 语法:

         * 1.function 函数名(){}

         * 2.var 变量名 = function(){}

         *

         * 和Java的区别:

         * 1.没有访问修饰符修饰

         * 2.参数列表不带类型,因为定义变量时全是var弱类型

         * 3.若有返回值直接返回即可,函数不用声明返回值类型或者void

         * 4,参数列表可以传递函数

         * 5.没有异常列表

         * 6.调用函数时传递的实参和函数声明的形参列表可以不不保持一致,若要查看函数实际接收到的参数可使用argument关键字查看

        */

function show() {
        document.write("方式一的函数鸭");
       }

       //调用函数
       show();

       var v1 = function(){
        document.write("方式二的函数鸭");
       }
       v1();

       var v2 = function(s1, s2) {
        document.write(arguments);
        console.log(arguments);
        s1();
        s2();
       }
       v2(show, v1);

 5. 对象

 /**

         * 对象

         * 创建对象语法:

         * 1.new objcet();

         * 创建对象后再添加属性值,对象没有该属性值会自动创建

         * 2.{属性名:属性值,属性名:属性值,函数名:function(){},}

        */

//方式1:
       var person = new Object();
        person.name = "zhangsan";
        person.age = 18;
        person.eat = function () {
            document.write("eat");
        }
        document.write(person.name + person.age);
        person.eat();

        //方式2:
       var person2 = {
            "name": "lisi",
            "age": 19,
            "sleep": function () {
                document.write("睡觉");
            }
        };
        person2.sleep();
        document.write(person2.name + person2.age);

6. JSON格式

/**

         * JSON格式的语法:

         * var perstr = '{"属性名": "属性值", "属性名": "属性值", "属性名": ["属性值", "属性值", "属性值"], "属性名":[{},{},{}]};'

         * 属性名必须用 "" 包裹上

         * 属性值如果是数字可以不用,其余必须用 ""包裹上

         */

var perstr = '{"name": "刘一飞", "age": 18, "hobby": ["跑步", "游泳", "做爱做的事情"], "宠物":[{"name": "猫"}]}';
        //将JSON串转换成对象
        var person = JSON.parse(perstr);
        //打印到控制台
        console.log(person.name);
        console.log(typeof person.name);
        console.log(person.age);
        console.log(typeof person.age);
        console.log(person.宠物[0]);
        console.log(person.hobby);
        //将对象转换成JSON串
        var str = JSON.stringify(person);
        document.write(str);

7. 事件

/**

         * 事件:

         * 绑定事件语法:

         *      1.通过元素的属性绑定 onXXX

         *      2,通过DOM编程动态便规定

         * 注意:

         *  1.一个事件可以同时绑定多个函数

         *  2.一个元素可以同时绑定多个事件

         *

         *

         * 1.鼠标事件:onclick(单击) ondblclick(双击) onmouseover(悬停) onmouseenter(滑入) onmouseeave(滑出)

         * 2.键盘事件:onkeydown(按下) onkeyup(抬起)

         * 3.表单事件: onfocuse(获得焦点) onblur(失去焦点) onchange(焦点内容发生改变并且失去焦点时触发)

         *          onsubmit(表单提交时触发) onreset(表单重置时触发)

         * 4.页面记载事件:onload(页面加载完毕事件)

         *

         *

         * 事件的触发:

         * 1.行为触发

         * 2.DOM编程触发

         *

         * 弹窗的三种方式

         * 1.alert():信息提示框

         * 2.prompt():信息输入框

         * 3.confirm():信息确认框

         */

function testsubmit() {
            //弹窗:信息确认框confirm
            var falg = confirm("提交么?")
            console.log(falg);

            //阻止组件默认提交行为
            event.preventDefault();
        }
        function testrest() {
            //弹窗:信息提示框:alert
            alert("要重置咯");
        }

form onsubmit="testsubmit()" onreset="testrest()">
        账号:<input type="text" onfocus="testfocus()" onblur="testblur()" onchange="testchange()"/>
        <br>
        密码: <input type="password" onfocus="testfocus()" onblur="testblur()" onchange="testchange()" />
        <br>
        <input type="submit"/>
        <input type="reset" />
    
        <hr>
        //<input type="text" onclick="f1()" ondblclick="f2()" />
        <img src="/demo1-html/img/屏幕截图 2024-03-23 162925.png" width="300px" alt="404" typeof="肥奶龙"
        onclick="f1()" ondblclick="f2()" onmouseover="f3()" onmouseenter="f4()" onmouseleave="f5()"/>
        <input type="text" onkeydown="f6()" onkeyup="f7()" onkeypress="f8()" />
        <hr>
    </form>

 onload事件

<script>
        //方式一:
        function ready() {
            //通过dom编程获取按钮对象
            var but1 = document.getElementById("but1");
            //获取按钮对象后绑定事件
            but1.onclick = function () {
                alert("触发按钮咯");
            }
        }
</script>

<!--
    注意:绑定页面加载事件后会进行先读,即先把整个html文件扫描完毕在触发绑定的函数ready()
    因为script标签建议内嵌在head标签中,代码由上往下逐行读取执行,
    若内嵌在head标签中会比body标签先执行,当读取到函数ready()时里面的but1是未知的,未声明的
    而绑定onload事件后会把文档读取完毕再执行事件所绑定的函数ready(),此时不会报错

-->
<body onload="ready()">
    <button id="but1">按钮</button>
</body>
<script>
        //方式二:
        window.onload = function() {
            //通过dom编程获取按钮对象
            var but1 = document.getElementById("but1");
            //获取按钮对象后绑定事件
            but1.onclick = function () {
                alert("触发按钮咯");
            }
        }
</script>

<body>
    <button id="but1">按钮</button>
</body>

8. BOM编程

BOM编程中的BOM指的是浏览器对象模型(Browser Object Model)。BOM提供了独立于内容的、可以与浏览器窗口进行互动的对象结构,使得JavaScript有能力与浏览器“对话”。通过BOM,可以操作浏览器窗口,例如弹出框、控制浏览器跳转、获取分辨率等。BOM是把“浏览器”当做一个“对象”来看待,其对象结构主要包括window对象和window的子对象(如screen、location、history、navigator)。

BOM编程主要是将浏览器窗口的各个组成部分抽象成各个对象,然后通过各个对象的API操作组件行为。例如,window对象具有open和close方法,可以开启和关闭窗口。window.open()方法不仅可以用于导航到指定URL,也可以用于打开新浏览器窗口。

然而,需要注意的是,BOM是浏览器厂商在各自浏览器上定义的,因此其兼容性较差,且尚无统一的标准。不同的浏览器可能会实现不同的方法和属性,这可能导致跨浏览器的不一致性问题。

总的来说,BOM编程是Web开发中非常重要的一部分,它允许开发者通过编程方式控制和操作浏览器窗口及其组件,从而为用户提供更丰富的交互体验。 

/**

         * alert:信息提示框

         * prompt:信息输入框

         * confirm:信息确认框

         * set

         * 注意:window对象由浏览器提供,无需自己创建,window可省略不写

         *

         *

         * history 窗口访问的历史

         * location

         * sessionstorage 会话存储 用于存储会话级数据(当浏览器关闭重启数据会清除)

         * localstorage   本地存储 用于存储永久级数据(当浏览器关闭重启数据仍保留)

         * console 控制台

         */

<script>
        
        function fun1() {
            var str = window.alert("hello");
            console.log(str);
        }
        function fun2() {
            var str = window.prompt("信息输入框框");
            console.log(str);
        }
        function fun3() {
            var str = window.confirm("信息确认框");
            console.log(str);
        }
        function fun4() {
            window.setTimeout(function() {
                console.log("hello");
            }, 2000);
        }
    </script>

<body>
    <button onclick="fun1()">信息提示框</button>
    <button onclick="fun2()">信息输入框</button>
    <button onclick="fun3()">信息确认框</button>
    <button onclick="fun4()">定时任务</button>
</body>

 history 窗口访问历史

script>
        function funA() {
            //上一页
            history.back();
        }
        function funB() {
            // 下一页
            history.forward();
            //history.go(3);//向下跳3页
        }
        function funC() {
            //href是location中的属性,不是方法,此时直接修改属性的url
            location.href="https://blog.csdn.net/2301_79526467?spm=1011.2124.3001.5343";
        }
    </script>

 sessionstorage 会话存储

localstorage 持久存储

<script>
        function funD() {
            console.log("存储");
            //会话级存储,当浏览器关闭重启后数据会丢失
            sessionStorage.setItem("keyA", "valueA");
            //本地存储,浏览器关闭重启后数据还在
            localStorage.setItem("keyB", "valueB");
        }
        function funE() {
            //读取数据
            console.log("读取");
            console.log(sessionStorage.getItem("keyA"));
            console.log(localStorage.getItem("keyB"));
        }
        function funF() {
            //清空数据
            console.log("清空");
            sessionStorage.removeItem("keyA");
            localStorage.removeItem("keyB");
        }
    </script>

9. DOM编程

1 获得document  dom树
        window.document
    2 从document中获取要操作的元素
        1. 直接获取
            var el1 =document.getElementById("username") // 根据元素的id值获取页面上唯一的一个元素
            var els =document.getElementsByTagName("input") // 根据元素的标签名获取多个同名元素
            var els =document.getElementsByName("aaa") // 根据元素的name属性值获得多个元素
            var els =document.getElementsByClassName("a") // 根据元素的class属性值获得多个元素
        2. 间接获取
            var cs=div01.children // 通过父元素获取全部的子元素
            var firstChild =div01.firstElementChild  // 通过父元素获取第一个子元素
            var lastChild = div01.lastElementChild   // 通过父元素获取最后一个子元素
            var parent = pinput.parentElement  // 通过子元素获取父元素
            var pElement = pinput.previousElementSibling // 获取前面的第一个元素
            var nElement = pinput.nextElementSibling // 获取后面的第一个元素
    3 对元素进行操作
        1. 操作元素的属性   元素名.属性名=""
        2. 操作元素的样式   元素名.style.样式名=""  样式名"-" 要进行驼峰转换
        3. 操作元素的文本   元素名.innerText   只识别文本
                           元素名.innerHTML   同时可以识别html代码 
        4. 增删元素
            var element =document.createElement("元素名") // 创建元素
            父元素.appendChild(子元素)               // 在父元素中追加子元素
            父元素.insertBefore(新元素,参照元素)     // 在某个元素前增加元素
            父元素.replaceChild(新元素,被替换的元素) // 用新的元素替换某个子子元素
            元素.remove()                            // 删除当前元素

10. 正则表达式

> 正则表达式是描述字符模式的对象。正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。 

var patt=new RegExp(pattern,modifiers);
或者更简单的方式:
var patt=/pattern/modifiers;  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Roxlabs代理服务:智能化数据采集的加速器

TOC 一、引言 在这个数据驱动的时代&#xff0c;无论是企业还是个人&#xff0c;对于准确、及时的信息获取都有着前所未有的需求。网络数据采集已成为洞察市场趋势、分析竞争对手动态、优化营销策略的关键手段。然而&#xff0c;面对全球范围内的网站和服务&#xff0c;如何高…

【美团笔试题汇总】2024-03-30-美团春招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新美团近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

使用python将pdf插入到docx中

from pdf2image import convert_from_path from docx import Document from docx.shared import Inches,Cm# 将PDF转换为图片 pages convert_from_path(4.pdf, 200) # 200是DPI&#xff0c;可以根据需要调整doc Document()# 计算图片在docx中应该显示的宽度 img_width Cm(2…

【文献分享】 机器学习 + 分子动力学 + 第一性原理计算 + 热力学性质(熔化温度 热导率 热膨胀系数)

分享一篇关于机器学习 分子动力学 第一性原理 熔化温度&#xff08;熔化温度 & 热导率 & 热膨胀系数&#xff09;的文章。 感谢论文的原作者&#xff01; 关键词&#xff1a; 1. Al−Li alloy 2. Neural network potential 3. Molecular dynamics 4. Thermal pr…

二维码门楼牌管理应用平台建设:三维白模数据建设的意义

文章目录 前言一、三维白模数据建设的意义二、二维码门楼牌管理系统的构建三、二维码门楼牌管理系统的优势四、面临的挑战与未来展望 前言 随着城市管理的精细化和智能化需求日益增强&#xff0c;二维码门楼牌管理应用平台的建设成为推动城市管理现代化的重要手段。本文将探讨…

【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin LearnDash LMS 4.10.2及之前版本存在安全漏洞&#x…

labelme的安装与使用以及如何将labelme标注的json格式关键点标签转为yolo格式的标签

有任何问题我们一起交流&#xff0c;让我们共同学习 标注的json格式以及转换后的yolo格式示例希望得到您的指导背景及代码可用范围一、yolo关键点检测数据集格式二、labelme的安装和使用&#xff08;一&#xff09;labelme的安装&#xff08;二&#xff09;labelme的使用 三、j…

Unity-C#进阶——3.27更新中

文章目录 数据结构类ArrayListStackQueueHashtable 泛型泛型类、泛型方法、泛型接口ListDictionaryLinkedList泛型栈&#xff0c;泛型队列 委托和事件委托事件匿名函数Lambad 表达式**闭包** List 排序逆变协变多线程进程线程多线程方法&#xff1a;线程之间共享数据&#xff1…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《强沙尘暴下新能源基地的弹性评估及其提升方法 》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

mysql 条件/系统/加密/其它函数

学习了日期时间函数&#xff0c;接着学习条件、系统、加密和其它函数。 3&#xff0c;条件判断函数 条件判断函数也称为控制流程函数&#xff0c;根据满足的条件的不同&#xff0c;执行相应的流程。MySQL中进行条件判断的函数有IF、IFNULL和 CASE。 函数 说明 IF(expr,v1,v2…

单例设计模式(3)

单例模式&#xff08;3&#xff09; 实现集群环境下的分布式单例类 如何理解单例模式中的唯一性&#xff1f; 单例模式创建的对象是进程唯一的。以springboot应用程序为例&#xff0c;他是一个进程&#xff0c;可能包含多个线程&#xff0c;单例代表在这个进程的某个类是唯一…

跨境电商IP防关联是什么?有什么作用?

做跨境电商的朋友应该都知道IP防关联这个词,那么为何IP需要防关联呢&#xff1f;今天为大家来解答这个问题。 跨境电商IP防关联是指在跨境电商运营中&#xff0c;通过采取一系列技术手段&#xff0c;确保每个跨境电商账号使用独立的IP地址&#xff0c;以避免账号之间因为IP地址…

【Linux实践室】Linux用户管理实战指南:用户权限切换操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;图形化界面登录2.2 &#x1f514;使用login…

【java苍穹外卖项目实战四】新增员工功能

文章目录 1、需求设计分析2、接口设计3、表设计4、设计DTO类5、Controller层功能实现6、Service层功能实现7、Mapper层功能实现 1、需求设计分析 一般在做需求分析时&#xff0c;往往都是对照着产品原型进行分析&#xff0c;因为产品原型比较直观&#xff0c;便于我们理解业务…

Unreal的Quixel Bridge下载速度过慢、下载失败

从Quixel Bridge下载MetaHuman模型&#xff0c;速度非常慢&#xff0c;而且经常下载失败&#xff0c;从头下载。 可以从Quixel Bridge的右上角我的图标->Support->Show Logs打开日志目录 downloaded-assets目录下为下载的资源 bridge-plugin.log文件记录了下载URL和下载…

矩阵间关系的建立

参考文献 2-D Compressive Sensing-Based Visually Secure Multilevel Image Encryption Scheme 加密整体流程如下: 我们关注左上角这一部分: 如何在两个图像之间构建关系,当然是借助第3个矩阵。 A. Establish Relationships Between Different Images 简单说明如下: …

leetcode 331. 验证二叉树的前序序列化【计数器】

原题链接&#xff1a;331. 验证二叉树的前序序列化 题目描述&#xff1a; 序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时&#xff0c;我们可以记录下这个节点的值。如果它是一个空节点&#xff0c;我们可以使用一个标记值记录&#xff0c;例如 #。 例如…

鸿蒙OS开发实例:【瀑布流式图片浏览】

介绍 瀑布流式展示图片文字&#xff0c;在当前产品设计中已非常常见&#xff0c;本篇将介绍关于WaterFlow的图片浏览场景&#xff0c;顺便集成Video控件&#xff0c;以提高实践的趣味性 准备 请参照[官方指导]&#xff0c;创建一个Demo工程&#xff0c;选择Stage模型熟读Har…

思维题,LeetCode331. 验证二叉树的前序序列化

一、题目 1、题目描述 序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时&#xff0c;我们可以记录下这个节点的值。如果它是一个空节点&#xff0c;我们可以使用一个标记值记录&#xff0c;例如 #。 例如&#xff0c;上面的二叉树可以被序列化为字符串 &quo…

数字孪生|山海鲸可视化软件Windows版安装步骤

哈喽&#xff0c;大家好啊&#xff0c;我是雷工&#xff01; 今天尝试下该数字孪生软件&#xff0c;以下为安装步骤&#xff0c;我这里安装的是Windows版本。 1、系统配置要求 由于该软件主要功能是为了编辑可视化大屏&#xff0c;因此该软件必须安装在有桌面的系统内。 2、…