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编写位置

  1. 可以将JS代码编写到标签的onclick属性中,当我们点击按钮时,JS代码才会执行。虽然可以写在标签的属性中,但是他们属于结构与行为耦合,不方便维护,不推荐使用
  2. 可以将JS代码写在超链接的href属性中,这样当点击超链接时,会执行JS代码。
  3. 可以将JS代码编写到script标签
  4. 可以将JS代码编写到外部JS文件中,然后通过script标签引入。写到外部文件中可以在不同的页面同时引用,也可以利用到浏览器的缓存机制,是推荐使用的方式。
  5. 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注释:分单/多行注释,注释中的内容不会被执行,但是可以在源代码中查看。
单行注释: // 注释内容
多行注释: /*注释内容/

  1. JS中严格区分大小写
  2. JS中每一条语句以分号结尾。如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,而且有些时候浏览器会加错符号。
  3. JS中会忽略多个空格和换行,所以我们可以利用空格和换行进行格式化。

5.字面量和变量

字面量:都是一些不可改变的值。比如1,2,3。字面量都是可以直接使用,但是我们一般都不会直接使用字面量。
变量:可以用来保存字面量,而且变量的值是可以任意改变的,变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,而很少直接使用字面量。可以通过变量对字面量进行描述。

  1. 使用变量前要声明变量。在JS中使用var关键词来声明一个变量。
  2. 为变量赋值。
  3. 声明和赋值可以同时使用。
<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中所有的可以由我们自主命名的都可以称为是标识符。 例如变量名、函数名、属性名等都属于标识符。
    命名一个标识符时需要遵守如下规则
  1. 标识符中可以含有字母、数字、_、$
  2. 标识符不能以数字开头 标识符不能是ES中的关键字或保留字
  3. 标识符一般采用驼峰命名法——首字母小写,每个单词的开头字母大写,其余字母小写: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从入门到入土(一)相关推荐

  1. JS入门到入土之数字运算符扩展

    系列文章目录 JS入门到入土之数字运算符扩展 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 系列文章目录 JS入门到入土之数字运算符扩展 前言 概述 加法运算符 基本规则 对 ...

  2. 狭义相对论从入门到入土(建议初一及以上)

    欢迎来到HowardZhangdqs的劝退小课堂.这是狭义相对论从入门到入土(建议初一以上)系列的第二个集合版,修订了大量之前未发现的错误,如果大家在阅读时发现了错误欢迎联系我 zjh@shangha ...

  3. Java学习指南从入门到入土

    Java学习指南从入门到入土 本身其实只是刚刚入门,只是经历了两年时间的风吹雨打,经历了各种bug的折磨和学习各种框架的辛酸,才有得现有的 刚刚入门.有句老话说的好叫做 从入门到放弃,人生不易要及时放 ...

  4. Java学习路线从入门到入土

    Java学习路线从入门到入土 Java学习路线从入门到入土 Java学习路线从入门到入土 简介 Java基础课程 第一阶段 第一部分:Java开发介绍 第二部分:Java数组 第三部分:Java面向对 ...

  5. 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 ...

  6. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令

    文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...

  7. flowable画图教程_Flowable从入门到入土(1)-初始Flowable

    Flowable从入门到入土 作者:独钓寒江雪 一剑一酒一江湖, 便是此生 心中有图,何必点灯.装载请注明出处 前文传送门: 简介 当前周围好多人都对flowable有所了解乃至投入到生产使用,此文章 ...

  8. PixiJS超级详细教程【从入门到入土-上】

    PixiJS 来自GitHub教程 GitHub - Zainking/LearningPixi: ⚡️Pixi教程中文版 PixiJS超级详细教程[从入门到入土-下]地址[https://blog. ...

  9. 54 Node.js快速入门

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.Node开发概述 1.1 为什么要学习服务器端开发基础 能够与后端程序员更加紧密的配合 ...

最新文章

  1. 数组、字符串对象、Math对象
  2. 报名 | 清华大学大数据能力提升项目开始报名啦!(2021秋)
  3. Python list排序
  4. 南京金陵中学2021高考成绩查询,2021高考成绩出炉 南京各大高中喜报来了!
  5. Hexo+github搭建个人博客-博客发布篇
  6. Ubuntu下查看命令的源码
  7. 【星球知识卡片】换脸算法和人脸驱动都有哪些核心技术,如何对其长期深入学习...
  8. ?类型 ,?类型(值)
  9. 安川最小巧机器人_2020工博会,安川展品前瞻(机器人篇)
  10. Java集合系列:Vector解析
  11. C# ASP.NET 权限设计 完全支持多数据库多语言包的通用权限管理系统组件源码
  12. navigation右边按钮点击事件
  13. java采集温湿度水浸_智能电力水浸监控解决方案
  14. 顶级Linux发行版(10)——Gentoo Linux [转]
  15. Deep Learning ——Yann LeCun,Yoshua BengioGeoffrey Hinton
  16. 架构实战篇:使用MyBatis延迟加载模式为数据库减压,附演示实例
  17. 2018年安徽批捕涉黑涉恶犯罪2691人
  18. 获取高德地图位置的经纬度
  19. dns和私人dns是什么意思?企业如何预防dns劫持?
  20. Swagger界面丑、功能弱怎么破?用Postman增强下就给力了!

热门文章

  1. 什么是触发器?MySQL触发器概念及其应用解析
  2. POI2001 金矿
  3. ios共享账号公众号_英雄联盟手游预约起来!最新2020年ios日本AppleID账号密码共享...
  4. mysql hy000_Mysql ERROR 145 (HY000)
  5. java 实现长轮询(LongPolling)
  6. 【围观】今晚8点,OK Jumpstart三期ETM项目专场来啦~
  7. 第01讲:技术人职业发展路径
  8. 从ZETA无线通信技术特点出发选择合适的物联网协议
  9. 数据库访问层中间件Zebra
  10. 数据治理全景图谱(PPT)