【JavaStript】

news2024/11/26 16:51:20

目录

🐷1. JavaScript 的书写形式

🛩1.1 行内式

💛 1.2 内嵌式

🍗1.3 外部式

🍿2. JavaScricpt 的一些常用语句

🛴2.1  输入:prompt

👽2.2 输出:alert

🎨2.3 console.log

💕2.4 相关代码练习

🚌3. JavaScript 语法

🚒3.1 变量的使用

🎉基本数据类型

🍳3.2 JavaScript 运算符

🍩3.3 JavaScript 数组

🚀3.4 JavaScript 函数

🤴4. JavaScript 作用域

✨5. JavaScript 对象

👑5.1 使用 字面量 创建对象(常用)

🎈6. JavaScript 实例

🥇6.1 更换网址图片

🎅 6.2 猜数字游戏

🍶6.3 聚合搜索

🍎6.4 表白墙


前端三剑客:JavaScript、CSS 以及 HTML。我在前一篇文章中已经介绍了 HTML 的相关内容(HTML) 。这三者各自意味着什么呢?

看了我前一篇关于 HTML 的文章,大家就会发现,HTML 写出来的网页十分简陋,一点都不高大上!这是因为一个好看又实用的网站,往往需要前端三剑客的互相配合。HTML 负责网页的结构(骨)、CSS 负责网页的颜值(皮),而 JavaScript 负责让网页动起来。

JavaScript 是一种网页脚本语言,有自己的语法,但由于该门语言的创建者布兰登·艾奇(Brendan Eich)只用了 10 天时间便创建出 JS,所以 JS 会存在某些细节考虑的不够严谨的问题。

虽然 JS 的确存在一些缺陷,但依旧不影响它在网页设计上发挥的重大作用。

JavaScript 的工作原理是通过在 HTML 网页中直接嵌入 JS 脚本,实现读写HTML元素内容,更改HTML元素样式等功能。

在介绍 JavaScript 语法之前,先介绍一下 JavaScript 在 HTML 中的书写形式

1. JavaScript 的书写形式

1.1 行内式

JS 的代码直接写到 html 语句的内部:

 1.2 内嵌式

写到 script 标签中,并且 script 标签最好写在 </body> 前。

    <script>
        alert('你好世界!')
    </script>

 把 script 标签写到 head 标签里面,可以吗?

最好不要这样,因为 HTML 的运行顺序是从上到下的,如果在 head 里放 script 标签,可能会造成问题。比如以下情况:

<body>
    <input id="btnl" type="button" value="点我一下下" onclick="console.log('hello.javascript')">
</body>

 上述代码表示,按一下按钮,在控制台上输出 hello.javascript。

如果在 head 里放 script 标签,而 script 标签中的代码需要的参数,还未被执行,这就会产出 bug:

<head>
......
<script>
        alert(document.getElementById("btnl").value)
    </script>
</head>
<body>
    <input id="btnl" type="button" value="点我一下下" onclick="console.log('hello.javascript')">
</body>

 基于上述原因,script 标签最好写在 </body>的前一行,而不要写在 head 标签里头。

<body>
    <input id="btnl" type="button" value="点我一下下" onclick="console.log('hello.javascript')">
    <script>
        alert(document.getElementById("btnl").value)
    </script>
</body>

1.3 外部式

写到单独的 js 文件中,这样的文件往往可供多个 html 文件调用的,反而不依赖每个 html 文件中 body 标签里的内容,这种写法反而更推荐写在 head 标签中。

<head>
......
<script src = "tools.js"></script>
</head>

 tools.js 文件中的代码:

alert("hello world!");

2. JavaScricpt 的一些常用语句

2.1  输入:prompt

弹出一个输入框

    <script>
        prompt("请输入你的姓名:");
    </script>

2.2 输出:alert

弹出一个警示的对话框

2.3 console.log

在控制台打印一个日志(供程序员看)

console.log("这是一条日志");

日志是程序员调试程序的重要手段。

2.4 相关代码练习

        var name = prompt("请输入你的姓名?");
        var age = prompt("请输入你的年龄?");
        var gender = prompt("请输入你的性别");
        alert("姓名:"+name+"年龄:"+age+"性别:"+gender);

 

3. JavaScript 语法

就问一句,JavaScript 与 Java 之间有什么密切联系吗?给大家来一组类比,就解释清楚了:JavaScript 与 Java 的关系,就好比雷锋与雷锋塔之间的关系、印度与印度尼西亚之间的关系、周杰与周杰伦之间的关系以及黑客与博客之间的关系。

也就是说,JavaScript 与 Java 之间啥关系也没有。但是 JavaScript 的一些基本语法与 java 的一样。下面只挑一些与 java 基本语法不一样的来展示。

3.1 变量的使用

var name = 'lisi';
var age = 20;

var 是 JS 中的关键字,表明这是一个变量。每个语句最后都会带有 ; 结尾,在 JS 中可以省略,但建议加上。  如果初始化的值为字符串,那么使用单引号或双引号引起来即可。

基本数据类型

JS 中内置的几种类型

number:数字,不区分整数和小数

boolean:参与运算时当作 1 和 0 来看待

String:字符串类型

undefined:只有唯一的值 undefined,表示未初始化的值

null:只有唯一的值 null,表示空值

        //undefined 数据类型
        var num ;
        console.log(num);
        console.log(num+"你好");
        console.log(num+10);

        //null 数据类型
        var num1 = null;
        console.log(num1);
        console.log(num1+"你好");
        console.log(num1+10);

输出:

undefined
undefined你好
NaN
null
你好
10

JavaScript 中存在的其中一个问题是,类型转换不确定。

<body>
    <script>
        var num = 5;
        var num1 = "5";

        alert(num + num1);
    </script>
</body>

 从结果中可以看出,一个数字+字符串,数字被转换成字符串了,相加变成了字符串的拼接。

可如果是 :

alert(num - num1);

结果却又是: 

 可以看出,在减法里面,字符串又被转换成数字。

所以为了安全起见,当你想使用数字类型时,建议使用 parseInt 强制类型转换一下。

alert(parseInt(num) + parseInt(num1));

这样就能输出 10 了。

下面再看一个例子:

        var num = prompt("判断奇偶,请输入一个数字:");
        console.log(num + 10);

输入了 12,控制台输出 1210 ,也就意味着,prompt 输入的数字会被转换成字符串,所以在我们使用 prompt 输入的数字时,一定要强制转换成数字才行:

        var num = prompt("判断奇偶,请输入一个数字:");
        console.log(num + 10);
        console.log(parseInt(num) + 10);
        if(parseInt(num) % 2 == 1){
            alert(num+"->奇数");
        }else{
            alert(num+"->偶数");
        }

3.2 JavaScript 运算符

JavaScript 中的运算符和 Java 用法基本相同。此处不做详细介绍了。但有一个需要注意的点,那就是 JavaScript 中,== 有隐式类型转换,而 === 没有隐式类型转换。

        var num = 1;
        var num1 = "1";
        console.log(num == num1);
        console.log(num === num1);

输出:

true

false

3.3 JavaScript 数组

        //数组
        var arr = new Array();
        //或者写成
        var arr1 = [];
        arr.push(1);
        arr.push("hello");
        arr.push("world");

        for(var i = 0; i < arr.length; i++){
            console.log(arr[i]);
        }

输出:

1

hello 

world

修改数组元素,这次使用 for ... of 打印:

        arr[1] = "hey";

        for(var term of arr){
            console.log(term);
        }

输出:

1

hey

world

删除数组元素

使用 splice ,有两个参数,第一个参数表示从下标为 i 的位置开始删除. 第二个参数表示要删除的元素个数。

        arr.splice(1,1);
        for(var term of arr){
            console.log(term);
        }
        console.log(arr.length);

输出:

1

world

2

也可以使用 slice 来截取,不会改变原数组的结果:

    //原数组为 1 hey world
        var obj = arr.slice(1,2); //左闭右开
        for(var term of obj){
            console.log(term);
        }

输出:

hey

查看数组的最后一个元素,并删除

        //arr的元素有:1 hey world
        console.log(arr.pop());
        console.log(arr.length);

输出:

world

2

3.4 JavaScript 函数

语法格式:

// 创建函数/函数声明

function 函数名(形参列表){

       函数体

       return 返回值;

}

  

// 函数调用

函数名(实参列表)  //不考虑返回值

返回值 = 函数名(实参列表)  //考虑返回值

    <input type="button" value = "添加" onclick = "add('张三','123')">&nbsp;&nbsp;&nbsp;
    <input type="button" value = "修改" onclick = "alter('张三','123456')">&nbsp;&nbsp;&nbsp;
    <script>
    //函数的形参甚至可以没有数据类型!
    function add(name, password){
        alert("添加信息成功!      "+"姓名:"+name+"  密码:"+password);
    }

    funtion up(){
        alert("修改信息成功!!");
    }
    </script>

 JavaScript 存在的第二个问题,便是函数实参与形参个数如果不匹配,程序照样能跑。在 script 标签中调用 add(),什么参数都没写,。:

 这也就意味着,JavaScript 不存在重载!

同样的,对于 alter 这个方法,它是没有参数,但调用时给他传参数了,也依旧可以运行。

那我们怎么拿到传给 alter 的所有参数呢?方法里面有个隐藏的参数,argument:

    function alter(){
        alert("修改信息成功!!");
        for(var item of arguments){
            console.log(item);
        }
    }

 

4. JavaScript 作用域

没有包含在方法中的所有代码,都叫全局代码,会随着页面的加载而执行。而方法只有被调用了,才会被执行。

        var num = 10;
        console.log(num);

        function test1(){
            //局部变量
            var num = 20;
            console.log(num);
        }

        function test2(){
            //局部变量
            var num = 30;
            console.log(num);
        }

        test1();
        test2();

        console.log(num);

输出:

10

20

30

10

        var num = 10;
        console.log(num);

        function test1(){
            var num = 20;
            console.log(num);
        }

        function test2(){
            //修改了全局变量 num
            num = 30;
            console.log(num);
        }

        test1();
        test2();

        console.log(num);

输出:

10

20

30

30

甚至于一开始就没有全局变量,在方法中没有写 var ,JS 也会替你创建一个全局变量:

       function test2(){
            num = 30;
            console.log(num);
        }

        test2();

        console.log(num);

输出:

30

30

所以 JavaScript 后期给出了一个关键字 let ,来严格的修饰局部变量。

5. JavaScript 对象

在 JS 中,字符串,数值,数组,函数都是对象。每个对象中包含若干的属性和方法。

5.1 使用 字面量 创建对象(常用)

        //创建了一个空对象
        var a = {};

        var student = {
            name : "莉丝",
            age: 19,

            sayHi:function() {
                console.log(student.name+"正在与你打招呼~");
            }
        };

        console.log(student.name);
        student.sayHi();

输出:

莉丝
莉丝正在与你打招呼~

6. JavaScript 实例

6.1 更换网址图片

<body>
    <img width="200px" height="120px" id="img_logo" src="https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png">

    <p></p>
    <input type="button" value="更换图片" onclick="changeImg()">

    <script>

        function changeImg(){
            var sg_img = "https://dlweb.sogoucdn.com/pcsearch/web/index/images/logo_880x280_06c7476.png?v=628ed034";
            document.getElementById("img_logo").src = sg_img;
        }
    </script>
</body>

 

 6.2 猜数字游戏

<body>
    <div>
        <h2>猜数字游戏</h2>
        玩家输入一个 1 ~ 10 数字:<input id="input_num" type="text"><p></p>
        <input type="button" value=" 查看结果 " onclick="selectResult()">
        <div id = "result_div">

        </div>
    </div>

<script>
        function selectResult(){
            // 产生随机数 1 ~ 10
            var randomNum = 1 + Math.floor(Math.random()*10);
            var userInputNum = document.getElementById("input_num").value;
            var msg ;
            if(randomNum == userInputNum){
                msg = "<h4> 恭喜:猜对了</h4>";
            }else{
                msg = "<h4>抱歉:猜错了,正确的数字是:" + randomNum + "</h4>";
            }
            document.getElementById("result_div").innerHTML = msg;

        }
</script>
</body>

 还可以使用 jQuery 实现。 jQuery 是 JavaScript 的一个框架,极大地简化了 JavaScript 的代码。

     function selectResultJq(){
            var randomNum = Math.floor(Math.random()*10)+1;
            var userInputNum = jQuery("#input_num").val();
            var msg;
            if(randomNum == userInputNum){
                msg = "<h4> 恭喜:猜对了</h4>";
            }else{
                msg = "<h4>抱歉:猜错了,正确的数字是:" + randomNum + "</h4>";
            }
            jQuery("#result_div").html(msg);
        }    

6.3 聚合搜索

 

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>聚合搜索</title>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div style="width: 100%; text-align: center;">
    <input type="button" value="必应" onclick="upSearch('https://www.bing.com/')">&nbsp;&nbsp;&nbsp;
    <input type="button" value="搜狗" onclick="upSearch('https://www.sogou.com/')">&nbsp;&nbsp;&nbsp;
    <input type="button" value="360" onclick="upSearch('https://www.so.com/')">&nbsp;&nbsp;&nbsp;
    </div>

    <hr>
    <iframe id="ifr" style="width: 100%; height: 600px;" src="https://cn.bing.com/"></iframe>

    <script>
        function upSearch(url){
            jQuery("#ifr").attr("src",url);
        }
    </script>
</body>
</html>

6.4 表白墙

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>表白墙</title>
    <script src="jquery.min.js"></script>
</head>
<body>
    <div style="width: 100%;text-align: center;">
        <h2>表白墙</h2>
        谁&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:<input id="username"><p></p>
        对谁&nbsp;&nbsp;&nbsp;:<input id="tousername"><p></p>
        说什么:<input id="msg"><p></p>
        <input type="button" value="提交" onclick="submit()"><p></p>
        <div id="div_allmsg">

        </div>

    </div>

    <script>
        function submit(){
            var username = jQuery("#username");
            var tousername = jQuery("#tousername");
            var msg = jQuery("#msg");

            //非空校验
            //trim() 是为了防止用户输入空格
            // return 是因为用户没有输入信息,不再执行之后的代码!
            if(username.val().trim() == ""){
                alert("请先输入您的姓名!");
                username.focus();
                return;
            }

            if(tousername.val().trim() == ""){
                alert("请输入对方的姓名!");
                tousername.focus();
                return;
            }

            if(msg.val().trim() == ""){
                alert("请先输入想要传达的信息!");
                msg.focus();
                return;
            }

            // 2.将内容展示在表白墙上
            jQuery("#div_allmsg").append(username.val()+"对"+tousername.val()+"说"+msg.val()+"<p></p>");

            // 3. 清空输入的内容
            username.val("");
            tousername.val("");
            msg.val("");

        }
    </script>
</body>
</html>


 

 

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

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

相关文章

Linux线程间的同步和互斥 进程间传统通信方式 5.16

Linux线程间的同步和互斥 同步&#xff1a;有顺序的考虑 按照约定的顺序相互配合完成一件事情&#xff08;红绿灯&#xff09; {释放 产生 资源1&#xff08;V操作&#xff09;&#xff1b;&#xff1b;申请 资源-1&#xff08;p操作&#xff09;} 信号量代表某一类资源&am…

RocketMQ整理

RocketMQ在阿里云上的商业版本,集成了阿里内部一些更深层次的功能及运维定制。开源版本,功能上略有缺失,但大体上是一样的。 使用Java开发,便于深度定制。最早叫MetaQ。消息吞吐量虽然依然不如Kafka,但是却比RabbitMQ高很多。在阿里内部,RocketMQ集群每天处理的请求数超过…

监控需求来源及主流方案对比

我们从开始了解监控系统来说&#xff0c;首先我们要先了解监控的需求来源&#xff0c;即监控系统都可以用于做什么? 监控需求来源 其实最初的需求很简单&#xff0c;即"系统出问题了我们要能及时感知"。后面随着技术的不断发展&#xff0c;我们对监控系统提出了更…

Linux的超级用户及权限

目录 一:Linux下的两个用户 二&#xff1a;权限 1&#xff1a;目录文件 文件创建的默认权限 2&#xff1a;普通文件 一:Linux下的两个用户 在使用Linux的时候会有两个身份,第一个是普通用户,普通用户在很多方面是受阻的,原因就是权限不够,在这种情况下就有一个超级用户,也…

iOS图片系列一 图片的基本属性

图片在项目的开发中使用频率很高&#xff0c;但是绝大部分都是作为普通的展示或者偶尔需要裁剪&#xff0c;并不需要对图片做什么特别的处理&#xff0c;最近做了一个项目对于图片的需求功能比较多&#xff0c;踩了很多坑的同时也对图片的使用有了更深的理解&#xff0c;整理下…

C++面经:初始化全局变量和未初始化全局变量有什么区别

全局变量初始化而且初始值不为0&#xff0c;那么这样的全局变量是放在内存的.data段的&#xff0c;如果全局变量初始值为0或者未初始化&#xff0c;那么这样的全局变量是放在.bss段的。 考点&#xff1a; 考察C/C语言内存模型&#xff0c;.data&#xff0c;.bss段存放的内容。 …

Windows shell环境: 从git bash切换到msys2

文章目录 1. 目的2. msys2 环境 (Environment)3. 升级 MSYS2: 使用 pacman 滚动式升级整个系统4. 在 Windows Terminal 中增加显示 MSYS25. 使用 zsh6. VSCode 中的配置增加 MSYS2 终端配置 git 路径 7. 安装 C/C 依赖库安装 ag查询 bison 和 flex 的安装目录 8. References 1.…

ES6模块化规范

在没有ES6模块化规范前&#xff0c;有像AMD、CMD这样的浏览器模块化规范&#xff0c;还有像CommonJS这样的服务端模块化规范。 2015年&#xff0c;JS终于推出了官方的模块化规范&#xff0c;为了统一各种规范&#xff0c;我们简称ES6 模块化。 ES6目前作为JS的内置模块化系统&a…

Spring的创建和使用,存储和读取Bean总结

目录 Spring项目创建和使用流程 1.创建一个 Spring 项目 2.存储 Bean 3.读取 Bean ApplicationContext和BeanFactory的区别 通过注解存储 Bean对象 五大类注解的关系 Java程序标准分层 方法注解Bean 注入Bean对象的三种方式 1.属性注入 2.Setter注入 3.构造方法注入…

【Java数据结构】Map和Set

Map和Set 搜索树概念操作 - 查找操作 - 插入操作 - 删除cur没有左树&#xff08;cur.left null&#xff09;cur没有右树&#xff08;cur.right null&#xff09;cur既有左树也有右树&#xff08;最困难的情况&#xff09;替罪羊删除法 操作代码性能分析和 java 类集的关系 搜…

程序员困局:去大城市进大厂却买不了房,回老家又没有高薪工作…

对于在外打拼的程序员来说&#xff0c;难的是进大厂&#xff0c;而不是买不起房。 进大厂的程序员&#xff0c;能不能买得起房&#xff1f; 进大厂的程序员的薪资&#xff0c;还是相当可观的。以阿里P6为例&#xff0c;年薪50万&#xff0c;到手40万左右&#xff0c;刨去10万…

【C++学习】C++11——新特性 | 右值引用 | 完美转发

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《C学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; C11——新特性 | 右值引用 | 完美转发 &#x1f440;列表初始化&#x1f9b4; std::initializer_list…

收藏!网络行业主流的六大技术认证全科普

大家好&#xff0c;我是老杨。你的年终总结做完了没&#xff1f;还没做完&#xff0c;点击“年终总结”&#xff0c;拿个模板&#xff0c;快速完成。 很多人在年末都会有列一个新年愿望清单&#xff0c;写写来年想要完成的事情。 不少网工在这两年的就业环境之下&#xff0c;…

Nginx-部署2个vue项目(多个项目)-二级域名设置代理

前言 最近在实际开发过程中&#xff0c;需要在服务器部署2个项目。需要nginx二级域名。 开始时候在网上查了一圈&#xff0c;各有说法&#xff0c;不是很全&#xff0c;很头大。这里把自己成功的二级域名代理记录一下。 网上有很多文章说要该router.js文件&#xff0c;要该vu…

自动备份交换机的配置到远程服务器

环境 交换机配置修改后及时备份相关配置&#xff0c;每次配置变化后需要在1分钟后自动进行保存&#xff0c;并且将配置上传至FTP服务器&#xff1b;每隔30分钟&#xff0c;交换机自动把配置上传到FTP服务器 配置命令&#xff1a; [huawei]set save-configuration delay 1 //…

单片机外围电路:电阻之上下拉电阻

1.基础概念 上拉就是将不确定的信号通过一个电阻钳位在高电平&#xff0c;电阻同时起限流作用。下拉同理&#xff0c;也是将不确定的信号通过一个电阻钳位在低电平。 2.基础应用 上下拉电阻在数字电路中使用&#xff0c;为了好理解一点&#xff0c;可把上下拉电阻大致分为两种…

货币简史:从物物交换到数字货币

货币简史 1. 物物交换阶段2. 一般等价物阶段3. 信用货币阶段4. 电子货币阶段5. 数字货币阶段 金钱是什么时候产生的呢&#xff0c;这取决于你如何定义金钱。 费利克斯马丁&#xff08;FelixMartin&#xff09;名为《金钱:未授权的传记》(Money:An Unauthorized Biography)书中…

19c rac环境修改pubic, vip,scan ip步骤

19c rac环境第一次修改public、vip和scan ip&#xff0c;和11g还是稍有不同。首先说明下环境 具体步骤如下 1、修改public地址&#xff0c;关闭实例后使用root用户操作 [rootdb1 ~]# ./oifcfg getif bond0 172.20.30.0 global public bond2 100.100.100.0 global clust…

【JVM】JVM堆内存(heap)详解

文章目录 前言一、堆内存划分二、为什么移除永久代&#xff1f;三、分代概念四、为什么分代&#xff1f;五、为什么survivor分为两块相等大小的幸存空间&#xff1f;六、JVM堆内存常用参数七、垃圾回收算法&#xff08;GC&#xff0c;Garbage Collection&#xff09;八、垃圾收…

java 反射及代理模式初步学习

java 反射及代理模式初步学习 0. 什么是反射&#xff1f; Java的反射&#xff08;reflection&#xff09;机制是指在程序的运行状态中&#xff0c;可以构造任意一个类的对象&#xff0c;可以了解任意一个对象所属的类&#xff0c;可以了解任意一个类的成员变量和方法&#xf…