新人JS从入门到入土(一)
1.JS简介
JavaScript诞生于1995年,它的出现主要是用于处理网页中的前端验证。
所谓的前端验证,就是指检查用户输入的内容是否符合一定的规则。
比如:用户名的长度,密码的长度,邮箱的格式等。
2.JS的Hello World
JS代码需要写到script标签中
alert:控制浏览器弹出一个警告框
document.write()可以向body中输出一个内容
console.log()的作用是向控制台输出一个内容
<!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>Document</title><script>/**控制浏览器弹出一个警告框*/// alert("好久不见");/**让计算机在页面中输出一个内容*document.write()可以向body中输出一个内容*/// document.write("感觉如何?");/**向控制台输出一个内容*console.log()的作用是向控制台输出一个内容*/// console.log("还好吧");alert("好久不见");document.write("感觉如何?");console.log("还好吧");</script>
</head>
<body></body>
</html>
3.JS编写位置
- 可以将JS代码编写到标签的onclick属性中,当我们点击按钮时,JS代码才会执行。虽然可以写在标签的属性中,但是他们属于结构与行为耦合,不方便维护,不推荐使用
- 可以将JS代码写在超链接的href属性中,这样当点击超链接时,会执行JS代码。
- 可以将JS代码编写到script标签
- 可以将JS代码编写到外部JS文件中,然后通过script标签引入。写到外部文件中可以在不同的页面同时引用,也可以利用到浏览器的缓存机制,是推荐使用的方式。
- script标签一旦用于引入外部文件,就不能再编写代码了,即使编写了浏览器也会忽略。如果需要则可以再创建一个新的script标签用于编写内部代码。
HTML代码:
<!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>Document</title><script>alert("我是内部的代码")</script><script src="./03.js"></script></head>
<body><button onclick="alert('点我干嘛?')">点我一下</button><a href="javascript:alert('让你点你就点!');">你也点一下?</a><a href="javascript:;">你也点一下?</a>
</body>
</html>
JS代码:alert("我是外部JS文件中的代码")
4.JS的基本语法
JS注释:分单/多行注释,注释中的内容不会被执行,但是可以在源代码中查看。
单行注释: // 注释内容
多行注释: /*注释内容/
- JS中严格区分大小写
- JS中每一条语句以分号结尾。如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,而且有些时候浏览器会加错符号。
- JS中会忽略多个空格和换行,所以我们可以利用空格和换行进行格式化。
5.字面量和变量
字面量:都是一些不可改变的值。比如1,2,3。字面量都是可以直接使用,但是我们一般都不会直接使用字面量。
变量:可以用来保存字面量,而且变量的值是可以任意改变的,变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,而很少直接使用字面量。可以通过变量对字面量进行描述。
- 使用变量前要声明变量。在JS中使用var关键词来声明一个变量。
- 为变量赋值。
- 声明和赋值可以同时使用。
<script>alert(123123123123);var a;a= 123;a= 456;a= 789;console.log(a);var b= 22;var c=0;var age=80;console.log(age);</script>
6.标识符
- 在JS中所有的可以由我们自主命名的都可以称为是标识符。 例如变量名、函数名、属性名等都属于标识符。
命名一个标识符时需要遵守如下规则:
- 标识符中可以含有字母、数字、_、$
- 标识符不能以数字开头 标识符不能是ES中的关键字或保留字
- 标识符一般采用驼峰命名法——首字母小写,每个单词的开头字母大写,其余字母小写:xxxYyyZzz
- JS底层保存标识符时实际上是采用的Unicode编码。所以理论上讲,所有的utf-8中含有的内容都可以作为标识符
数据类型
数据类型:指字面量的类型。在JS中一共有六种数据类型:
- String 字符串
- Number 数值
- Boolean 布尔值
- Null 空值
- Undefined 未定义
- Object 对象
其中String、Number、Boolean、Null、Undefined属于基本数据类型,而Object属于引用数据类型。
7.字符串
- 在JS中字符串需要使用引号引起来。
- 使用双引号或者单引号都可以,但不要混着用。
- 引号不能嵌套,双引号不能放双引号,单引号不能放单引号,双引号里可放单引号,反之亦可。
- 在字符串中我们可以使用\作为转义字符,当表示一些特殊符号时可以使用\进行转义。打印\需要用两个\表示,即\。打印两个\需要用两个\,即\\往后以此类推。
\ “表示”
\ ‘表示’
\n表示换行
\t表示制表符,相当于按了一次tab键
<script>var str ="hello";str ="我说:‘今天天气不错’";str ="我说:\"今天天气不错\"";str ="\\";//输出字面量 字符串stralert("str");//输出变量str,变量是什么就输出什么。alert(str); //括号中str与"hello"是一样的</script>
8.Numer
1.在JS中所有的数值都是Number类型,包括整数和浮点数(小数)
var a= 123;
//数字123
var b=123
//字符串123
可以运用一个运算符 typeof 来检查一个变量类型
<script >var a = 123.321;var b = "123.321";console.log(a);console.log(b);console.log(typeof a);console.log(typeof b);
</script>
2.js中可以表示的最大的数字:Number.MAX_VALUE(1.7976931348623157e+308)
如果使用Number表示的数值超过最大值,则会返回一个 Infinite 表示正无穷
<script>var c = Number.MAX_VALUE;var d = Number.MAX_VALUE * Number.MAX_VALUE;console.log(c);console.log(d);
</script>
3.js中可以表示的无穷小:Number.MIN_VALUE(5e-324)
如果使用Number表示的数值小于最大值,则会返回一个 0
<script >var e = Number.MIN_VALUE;var f = Number.MIN_VALUE * Number.MIN_VALUE;console.log(e)console.log(f)
</script>
4.NAN 是一个特殊数字,表示 not a number
使用 typeof 检查 infinite 和 nan 时都会返回一个 number
5.在js中整数的运算基本可以保证精确
如果使用js进行浮点数运算,可能得到一个不精确的结果
9.Boolean 布尔值
布尔值只有两个:
true(逻辑真)
false(逻辑假)
<script >var a = true;var b = false;console.log(a)console.log(typeof a)console.log(b)console.log(typeof b)</script>
10.Null 空值
Null 类型的值只有一个,就是null
null这个值专门用来表示一个为空的对象
注意:使用typeof检查null时返回的是 object
<script >var a = null;console.log(a)console.log( typeof a)</script>
11.Undefined 未定义
Undefined 类型的值也只有一个,就是undefined
当不给一个变量赋值时,他的值就是undefined
注意:使用typeof检查undefined 时返回的也是undefined
<script type="text/javascript">var b;console.log(b);console.log( typeof b);</script>
12.强制类型转换-string
强制类型转换 指的是将一个数据类型强制转换为其他的数据类型
类型转换主要指的是,将其他数据类型,转换为:string / number / boolean
将其他数据类型转换为 string
方法一:调用被转换数据类型的toString()
该方法不会影响到原变量,它会将转换的结果返回
注意:null和undefined 这两个值没有 toString() 方法
<script >var a = 123;console.log(a);console.log(typeof a);a = a.toString();console.log(a);console.log(typeof a);var b = a.toString();console.log(b);console.log(typeof b);var c = true;c = c.toString()console.log(c);console.log(typeof c);var d = null;d = d.toString()console.log(d);console.log(typeof d);var e = undefined;e = e.toString()console.log(e);console.log(typeof e);</script>
方法二 : 调用String()函数,并将被转换的数据作为参数传递给函数
使用 String() 函数做强制类型转换时,对于我们的Number 和Boolean 实际上就是调用 toString() 的方法
但是对于 null 和 undefined ,就不会调用 toString() 的方法,他会直接将 null 直接转换为"null"(将 undefined 直接转换为 " undefined ")
<script >var a = 123;a = String(a);console.log(a);console.log(typeof a);var b = null;b = String(b);console.log(b);console.log(typeof b);var c = undefined;c = String(c);console.log(c);console.log(typeof c);</script>
12.强制类型转换-Number
方法一:调用Number() 函数
将string转换为number
1.如果该字符串是纯数字,则直接将其转换为数字
2.如果该字符串含有非数字内容,则转换为NaN
3.如果该字符串是空字符串或者全是空格的字符串,则转换为0
<script >var a = "1e+2";a = Number(a);console.log(a);console.log(typeof a);var b = "abc";b = Number(b);console.log(b);console.log(typeof b);var c = " ";c = Number(c);console.log(c);console.log(typeof c);</script>
其余三种基本数据类型的 Number 转换结果:
<script >var d = true;d = Number(d);console.log(d);console.log(typeof d);var e = false;e = Number(e);console.log(e);console.log(typeof e);var f = null;e = Number(f);console.log(f);console.log(typeof f);var g = undefined;g = Number(g);console.log(g);console.log(typeof g);</script>
**方法二:**parseInt() 和 parseFloat()
parseInt() 把一个字符串转换为一个整数(可以利用这个方法取整数)
parseInt() 可以将一个字符串中有效的整数内容取出来然后转换为Number
parseFloat() 把一个字符串转换为一个浮点数
parseInt() 可以将一个字符串中有效的浮点数内容取出来然后转换为Number
可以在 parseInt() 中传递第二个参数,来指定数字进制
如果对非 string 使用 parseInt() 和 parseFloat() 它会先将其转换为 string 然后再操作
<script>var a = "123.123m123";a = parseInt(a);console.log(a);console.log(typeof a);var b = "123.123m123";b = parseFloat(b);console.log(b);console.log(typeof b);</script>
14.转换为Boolean
**方法:**使用 Boolean() 函数
1.我们如果将Number 转为Boolean 时,除了 0 和 NaN 是false,其余的都是true
2.我们如果将String 转为Boolean 时,除了空串是 false,其余的都是true
3.Null 和 Undefined 转换为 Boolean 时,都是 false
4.对象也会转换为true
<script>var a = 2;a = Boolean(a);console.log(a);console.log(typeof a);var b = 0;b = Boolean(b);console.log(b);console.log(typeof b);var c = "";c = Boolean(c);console.log(c);console.log(typeof c);var d = NaN;d = Boolean(d);console.log(d);console.log(typeof d);var e = null;e = Boolean(e);console.log(e);console.log(typeof e);var f = undefined;f = Boolean(f);console.log(f);console.log(typeof f);
</script>
运算符
通过运算符可以对一个或多个值进行运算,并获取运算结果
比如:typeof 就是运算符,可以获得一个值的类型,它会将该值的类型以字符串的方式返回(number string boolean undefined boject)
15.算术运算符
ber 类型的值进行运算时,会将这些值转换为 Number 然后再运算(字符串加法除外)
任何值与NaN 做运算都得NaN
1.如果对两个字符串进行加法运算,则会做拼串(将两个字符串拼接在一起,并返回)
2.任何值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串操作
3.可以利用 ② 的特点,来将任意的数据类型转换为String,只要给该数据 +“” 即可,实际上也是调用 String() 函数
<script >var a = 123;a = a + "";console.log(a);console.log(typeof a);var b = 456;console.log("b = "+b);var c = 1 + 2 + "3";console.log(c);</script>
当对非 number 类型的值进行运算时,会将这些值转换为 Number 然后再运算(字符串加法除外)
<script>var a = 100;a = a - "5";console.log("a = "+a);console.log(typeof a);var b = 100;b = b - "abc";console.log("b = "+b);b = 100 - "";console.log("b = "+b);b = 100 - null;console.log("b = "+b);b = 100 - true;console.log("b = "+b);b = 100 - false;console.log("b = "+b);b = 100 - undefined;console.log("b = "+b);</script>
<script>var a = 10;a = a % 3;console.log("a = "+a);var b = "abc";b = b % 3;console.log("b = "+b);
</script>
任何值做 - * / 运算时都会自动转换为Number
可以利用这一特点进行类型转换(-0 *1 /1)
<script>var a = "123";a = a - 0;console.log("a = "+a);console.log(typeof a);var b = "abc";b = b - 0;console.log("b = "+b);console.log(typeof b);var c = null;c = c - 0;console.log("c = "+c);console.log(typeof c);var d = true;d = d - 0;console.log("d = "+d);console.log(typeof d);var e = false;e = e - 0;console.log("e = "+e);console.log(typeof e);var f = undefined;f = f - 0;console.log("f = "+f);console.log(typeof f);
</script>
16.一元运算符
只需要一个操作数
当对非 number 类型的值进行运算时,会将这些值转换为 Number 然后再运算(字符串加法除外)
+正号
<script >var a = 5;a = +a;console.log("a = "+a);var b = true;b = b + 1 + + "abc";console.log("b = "+b);var c = true;c = c + 1 + "1";console.log("c = "+c);c = true + 1 + + "1";console.log("c = "+c);
</script>
-负号
类似于 一元运算符中的 + 正号
自增
自增分两种:
1.先++(++a)即先自增再赋值
2.后++(a++)即先赋值再自增
<script>var a1 = 1;a1++;console.log("a1 = "+a1);var a2 = "5";a2++;console.log("a2 = "+a2);var a3 = "abc";a3++;console.log("a3 = "+a3);var a4 = true;a4++;console.log("a4 = "+a4);var a = 1;b = a++;console.log("b = "+b)
</script>
自减
类似于 自增
17.逻辑运算符
js含有三种逻辑运算符
!非
对一个值进行非运算
1.如果对布尔值进行非运算,则会对布尔值进行取反
2.如果对非布尔值进行非运算,则会将其转换为布尔值,再进行布尔值取反
3.可以利用该特点,来将一个其他的数据类型转换为布尔值(取反两次,即 !!)
&& 与(且)
类似 c
1.如果两个值都为 true ,则返回后边的值
2.如果两个值都为 false ,则返回前面的值
①②用短路逻辑理解,第一个值为true则返回第二个值,第一个值为false则返回第一个值
<script >var a;a = 'abc' && 3 ;console.log("a = "+a);a = 3 && 'abc' ;console.log("a = "+a);a = 0 && true;console.log("a = "+a);a = '' && 0 ;console.log("a = "+a);a = NaN && 0 ;console.log("a = "+a);
</script>
如果第一个值为 true ,则返回第一个值
如果第一个值为 false ,则返回第二个值
21.赋值运算符
22.关系运算符
如果关系成立它会返回 true ,如果关系不成立则返回 false
对非数值进行比较时,会将其先转换为数字在进行比较
1.任何值与 NaN 进行任何比较,返回值都是false
2.如果两边都是字符串,比较的是字符串的字符编码 Unicode(ASCII码)
3.字符串的比较是一位一位的进行比较,如果两个一样才进行下一位的比较
注意:在比较两个字符串型色数字时,一定一定一定一定要转型
<script>var a = true ;a = a + 1 + +'11';console.log("a = "+a);
</script>
23.相等运算符
用来比较两个值是否相等
如果相等返回 true ,如果不等返回 false
用 == 来表示相等运算
用 ! = 来表示不等运算
注意:如果使用 == 或 ! = 来比较两个值时,如果类型不同,则会自动进行类型转换,将其转换为相同的类型
1.如果将 Undefined 与 Null 进行比较则会返回 false
2.NaN不与任何值相等,包括他本身
如果要判断一个变量是否为 NaN
可以引用 isNaN() 函数
=== :全等(不会进行自动进行类型转换,如果两个值不等,则直接返回false,如果两个值相等,则直接返回true)
! == :不全等(不会进行自动进行类型转换,如果两个值不等,则直接返回true,如果两个值相等,则直接返回false)
<script >console.log("\u2620\t\u2654")var a = NaN,b = 'abc',c = 1;a = isNaN(a);b = isNaN(Number(b));c = isNaN(c);console.log("a = "+a);console.log("b = "+b);console.log("c = "+c);b = Number(b);console.log("b = "+b);
</script>
24.条件运算符(三元运算符)
语法:
条件表达式 ? 语句1 : 语句2
条件运算符在执行时,首先对条件表达式进行求值
1.如果该值为true,则执行语句1,并返回执行结果
2.如果该值为false,则执行语句2,并返回执行结果
注意:如果条件表达式的求值结果为非布尔值,那么会将其转换为布尔值然后再进行运算
<script>var max , a , b ;a = 1; b = 2;max = a > b ? a : b ;console.log("max = "+max);
</script>
新人JS从入门到入土(一)相关推荐
- JS入门到入土之数字运算符扩展
系列文章目录 JS入门到入土之数字运算符扩展 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 系列文章目录 JS入门到入土之数字运算符扩展 前言 概述 加法运算符 基本规则 对 ...
- 狭义相对论从入门到入土(建议初一及以上)
欢迎来到HowardZhangdqs的劝退小课堂.这是狭义相对论从入门到入土(建议初一以上)系列的第二个集合版,修订了大量之前未发现的错误,如果大家在阅读时发现了错误欢迎联系我 zjh@shangha ...
- Java学习指南从入门到入土
Java学习指南从入门到入土 本身其实只是刚刚入门,只是经历了两年时间的风吹雨打,经历了各种bug的折磨和学习各种框架的辛酸,才有得现有的 刚刚入门.有句老话说的好叫做 从入门到放弃,人生不易要及时放 ...
- Java学习路线从入门到入土
Java学习路线从入门到入土 Java学习路线从入门到入土 Java学习路线从入门到入土 简介 Java基础课程 第一阶段 第一部分:Java开发介绍 第二部分:Java数组 第三部分:Java面向对 ...
- Ajax!从入门到入土
Ajax!从入门到入土 Ajax 1.JSON 1.1 什么是JSON 1.2 JSON语法 2.JSON的解析 2.1 Java中解析JSON 2.1.1 FastJSON解析 2.1.2 Jack ...
- Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令
文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...
- flowable画图教程_Flowable从入门到入土(1)-初始Flowable
Flowable从入门到入土 作者:独钓寒江雪 一剑一酒一江湖, 便是此生 心中有图,何必点灯.装载请注明出处 前文传送门: 简介 当前周围好多人都对flowable有所了解乃至投入到生产使用,此文章 ...
- PixiJS超级详细教程【从入门到入土-上】
PixiJS 来自GitHub教程 GitHub - Zainking/LearningPixi: ⚡️Pixi教程中文版 PixiJS超级详细教程[从入门到入土-下]地址[https://blog. ...
- 54 Node.js快速入门
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.Node开发概述 1.1 为什么要学习服务器端开发基础 能够与后端程序员更加紧密的配合 ...
最新文章
- 数组、字符串对象、Math对象
- 报名 | 清华大学大数据能力提升项目开始报名啦!(2021秋)
- Python list排序
- 南京金陵中学2021高考成绩查询,2021高考成绩出炉 南京各大高中喜报来了!
- Hexo+github搭建个人博客-博客发布篇
- Ubuntu下查看命令的源码
- 【星球知识卡片】换脸算法和人脸驱动都有哪些核心技术,如何对其长期深入学习...
- ?类型 ,?类型(值)
- 安川最小巧机器人_2020工博会,安川展品前瞻(机器人篇)
- Java集合系列:Vector解析
- C# ASP.NET 权限设计 完全支持多数据库多语言包的通用权限管理系统组件源码
- navigation右边按钮点击事件
- java采集温湿度水浸_智能电力水浸监控解决方案
- 顶级Linux发行版(10)——Gentoo Linux [转]
- Deep Learning ——Yann LeCun,Yoshua BengioGeoffrey Hinton
- 架构实战篇:使用MyBatis延迟加载模式为数据库减压,附演示实例
- 2018年安徽批捕涉黑涉恶犯罪2691人
- 获取高德地图位置的经纬度
- dns和私人dns是什么意思?企业如何预防dns劫持?
- Swagger界面丑、功能弱怎么破?用Postman增强下就给力了!
热门文章
- 什么是触发器?MySQL触发器概念及其应用解析
- POI2001 金矿
- ios共享账号公众号_英雄联盟手游预约起来!最新2020年ios日本AppleID账号密码共享...
- mysql hy000_Mysql ERROR 145 (HY000)
- java 实现长轮询(LongPolling)
- 【围观】今晚8点,OK Jumpstart三期ETM项目专场来啦~
- 第01讲:技术人职业发展路径
- 从ZETA无线通信技术特点出发选择合适的物联网协议
- 数据库访问层中间件Zebra
- 数据治理全景图谱(PPT)