目录

(一)JavaScript发展历史

(二)JavaScript的作用

1.浏览器客户端开发(前端开发)

2.服务端开发

3.桌面应用开发

(三)JavaScript的组成

1.ECMASCRIPT:

2.BOM (Browser Object Model): 浏览器对象模型

3.DOM (Document Object Model): 文档对象模型

(四)JavaScript代码书写方式(位置)

1.行内式 JS 代码(不推荐)

2.内嵌式 JS 代码

3.外链式 JS 代码(推荐)

(五)变量(重点)

1.概念及语法

2.定义变量及赋值

3.变量的命名规则和规范

4.访问变量值

(六)数据类型(重点)

1.概念

2.基本数据类型

3.复杂数据类型

4.判断数据类型

5.数据类型的转换

(七)运算符

1.概念

2.运算符类型

3.运算符优先级

(八)练习


(一)JavaScript发展历史

  1. 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一时。但是这是一款名副其实的浏览器--只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采用现有的语言,许它们直接嵌入网页。另一个是发明一种全新的语言。

  2. 1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运 行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。

  3. 网景公司动了心,决定与Sun公司结成联盟, 后来验证java在浏览器客户过于臃肿,适合服务端开发。

  4. 34岁的系统程序员Brendan Eich登场了。1995年4月,网景公司录用了他,他只用10天时间就把Javascript设计出来了。(多态语言)

  5. 1996年8月,微软模仿JavaScript开发了一种相近的语言,取名为JScript

  6. 1996年11月,Netscape公司决定将JavaScript提交给国际标准化组织ECMA (European Computer Manufacturers Association),希望JavaScript能够成为国际标准,以此抵抗微软。

  7. 1997年7月,ECMA组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器 脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。

<!--ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。-->


小结:

  • javascript是1995年网景公司雇佣布兰登开发的全新语言

  • javascript最初是为了实现浏览器客户端交互

  • ECMAScript与javascript关系


(二)JavaScript的作用

1.浏览器客户端开发(前端开发)   

常见的网页效果【表单验证,轮播图。。。】

与H5配合实现游戏【水果忍者: 水果忍者HTML5网页版在线游戏】

实现应用级别的程序【百度脑图 - 便捷的思维工具】

实现统计效果【http://echarts.baidu.com/examples/】

地理定位等功能【地图JS API示例 | 百度地图开放平台】

在线学编程【极客战记网易官网-玩游戏学编程零基础Python入门-CodeCombat中国官方个人版】

js可以实现人工智能【面部识别】

2.服务端开发 

Node.js :简单的说 Node.js 就是运行在服务端的 JavaScript。

3.桌面应用开发


(三)JavaScript的组成

1.ECMASCRIPT:

定义了javascript的语法规范,描述了语言的基本语法和数据类型

2.BOM (Browser Object Model): 浏览器对象模型

有一套成熟的可以操作浏览器的 API,通过 BOM 可以操作浏览器。比如: 弹出框、浏览器跳转、获取分辨率等

3.DOM (Document Object Model): 文档对象模型

有一套成熟的可以操作页面元素的 API,通过 DOM 可以操作页面中的元素。比如: 增加个 div,减少个 div,给div 换个位置等


小结:

  • JS 就是通过固定的语法去操作 浏览器 和 标签结构 来实现网页上的各种效果


(四)JavaScript代码书写方式(位置)

和 css 一样,我们的 js 也可以有多种方式书写在页面上让其生效。js 也有多种方式书写,分为行内式, 内嵌式,外链式。

1.行内式 JS 代码(不推荐

写在标签上的代码需要依靠事件(行为)来触发

<!-- 写在a标签的herf属性上 --><a href="javascript:alert('我是一个弹出层');">点击一下试试</a><!-- 写在其他元素上 --><div onclick="alert('我是一个弹出层')">点一下试试看</div><!-- 注:onclick 是要给事件(点击事件),当点击元素的时候执行后面的js代码 -->

2.内嵌式 JS 代码

内嵌式的js代码会在页面打开的时候直接触发

<!-- 在 html 页面书写一个 script 标签,标签内部书写 js 代码 --><script type="text/javascript">alert('我是一个弹出层')</script><!-- 注:script 标签可以放在 head 里面也可以放在 body 里面 -->

3.外链式 JS 代码(推荐)

外链式js代码只要引入了html页面,就会在页面打开的时候直接触发

新建一个 .js 后缀的文件,在文件内书写js代码,把写好的js文件引入html页面

// 我是 index.js 文件alert('我是一个弹出层')
<!-- 我是一个 html 文件 -->
<!-- 通过 script 标签的 src 属性,把写好的 js 文件引入页面 -->
<script src="index.js"></script>
​
<!-- 一个页面可以引入多个 js 文件 -->
<script src="index1.js"></script>
<script src="index2.js"></script>
<script src="index3.js"></script>

(五)变量(重点)

1.概念及语法

  • 变量是计算机内存中存储数据的标识符,根据变量名称可以获取到内存中存储的数据

  • 也就是说,我们向内存中存储了一个数据,然后要给这个数据起一个名字,为了是我们以后再次找到他

  • <!--变量的本质是内存中一个存储单元-->

  • <!--语法: var 变量名 = 值-->

2.定义变量及赋值

    // 定义一个变量var num;// 给一个变量赋值num = 100;// 定义一个变量的同时给其赋值var num2 = 200;

注意:

  • 一个变量名只能存储一个值

  • 当再次给一个变量赋值的时候,前面一次的值就没有了

  • 变量名称区分大小写(JS区分大小写)

3.变量的命名规则和规范

规则:必须遵守的,不遵守就是错

规范:建议遵守的(开发者默认),不遵守不会报错

  • 一个变量名称可以由数字字母英文下划线(_)美元符号($)组成

  • 严格区分大小写

  • 不能由数字开头,不要使用中文汉字命名

  • 不能是保留字或者关键字

  • 不要出现空格

  • 变量名尽量有意义(语义化)

  • 遵循驼峰命名规则,由多个单词组成的时候,从第二个单词开始首字母大写

4.访问变量值

控制台输出语句console.log('输出内容') 引号中的内容被打印显示到控制台窗口console.log(变量名) 变量名值被打印显示到控制台窗口

console.log('输出内容')
console.log(变量名)

(六)数据类型(重点)

1.概念

是指我们存储在内存中的数据的类型。我们通常分为两大类 基本数据类型 和 复杂数据类型

2.基本数据类型

  • 数值类型(number类型)

    一切数字都是数值类型(包括二进制,十进制,十六进制等)

    => var a = 10

    NaN(not a number),是一个非数字值

  • 字符串类型 (string类型)

    字符串类型值: 用引号引起来(单双引号都可)

    => var b = 'helloworld'

  • 布尔类型 (boolean类型)

    布尔类型值 true 成立 真 ;false 不成立 假;

    => var isStudent = true

  • 未定义的类型(undefined类型)

    只有一个,就是undefined,表示没有值的意思

  • 空类型(null)

    只有一个,就是null,表示空的意思

    => var n = null

3.复杂数据类型

就是对象类型,后面学习。

4.判断数据类型

既然已经把数据分开了类型,那么我们就要知道我们存储的数据是一个什么类型的数据,我们需要使用 typeof 关键字来进行判断。

typeof(变量) => 获取变量数据类型

console.log(typeof 变量) => 显示变量类型

<script>var s1 = 'hello'  // string 字符串类型console.log(typeof(s1))
​var n1 = 100  // number 数值类型console.log( typeof n1 )
​var isOk = true  // boolean 布尔类型console.log( typeof isOk)
​var isNull = null // null 类型console.log( typeof isNull )  // object
​var a    // undefined  未定义类型console.log( typeof a)
​var n2 = NaN  // 数值类型 number   NaN 和 1,2,3 ...都是数值类型的一个值, NaN表示的非数值 not is numberconsole.log(typeof n2)  // </script>

5.数据类型的转换

其它数据类型 => 数值类型

1.1 Number(变量)

​ => 返回转换之后的值

​ ①可以把一个变量强制转换成数值类型

​ ②可以转换小数,会保留小数

​ ③可以转换布尔值

​ ④遇到不可转换的都会返回NaN

  • 字符串类型 => 数值类型 string => number

    '100' -> 100 'abc' -> NaN '' -> 0

  • 布尔类型 => 数值类型 boolean => number

    true -> 1 false -> 0

  • null => 数值类型

    null -> 0

  • undefined => 数值类型

    undefined -> NaN

1.2 parseInt(变量)

​ => 返回转换之后的数值(特点: 取整

​ ①从第一位开始检查,是数字就转换,直到一个不是数字的内容

​ ②开头就不是数字,那么直接返回NaN

​ ③不认识小数点,只能保留整数

1.3. parseFloat(变量)

​ ①从第一位开始检查,是数字就转换,直到一个不是数字的内容

​ ②开头就不是数字,那么直接返回NaN

​ ③认识一次小数点

1.4 除加法以外的数学运算 实现类型转换

​ 隐式转换

​ ①运算符两边都是可运算数字才行

​ ②如果运算符任何一边不是一个可运算数字,那么就会返回NaN

​ ③ 加法不可以用

其它数据类型 => 字符串类型

2.1 String(变量)

​ => 返回转换之后的值

​ 所有数据类型都可以

  • String(100) => '100'

  • String(undefined) => 'undefined'

  • String(true) => 'true'

  • String(null) => 'null'

2.2 变量.toString()

​ 有一些数据类型不能使用toString方法,比如 undefined和null

2.3 使用加法运算

在JS里面,+ 有两个含义,一个是字符串拼接,只要 + 任意一边是字符串,就会进行字符串拼接;一个是加法运算,只有 + 两边都是数字的时候,才会进行数学运算

其它类型转 => 布尔类型

Boolean(变量)

=> 返回转换之后的值

在JS中,只有以下转换布尔值是false,其余都是true

'' 、0、 null、 undefined、 NaN => false

100 => true


(七)运算符

1.概念

就是在代码里面进行运算的时候使用的符号,不光只是数学运算,我们在JS里面还有很多的运算方式

2.运算符类型

数学运算符

1. => +

只有符号两边都是数字的时候才会进行加法运算

只要符号任意一边是字符串类型,就会进行字符串拼接

2. => -

会执行减法运算

会自动把两边都转换成数字进行运算

3. => *

会执行乘法运算

会自动把两边都转换成数字进行运算

4. => /

会执行除法运算

会自动把两边都转换成数字进行运算

5. => %

会执行取余运算

会自动把两边都转换成数字进行运算

赋值运算符

1. => =

就是把 = 右边的赋值给等号左边的变量名

var num = 100

就是把100赋值给num变量

那么num变量的值就是100

2. => +=

var a = 10;a += 10;console.log(a); // => 20

a += 10 等价于 a = a +10

3. => -=

var a = 10;a -= 10;console.log(a); // => 0

a -= 10 等价于 a = a - 10

4. => *=

var a = 10;

a *= 10;

console.log(a); // => 100

a *= 10 等价于 a = a *10

5. => /=

var a = 10;

a /= 10;

console.log(a); // => 1

a /= 10 等价于 a = a / 10

6. => %=

var a = 10;

a %= 10;

console.log(a); // => 0

a %= 10 等价于 a = a % 10

比较运算符

1.==

比较符号两边的值是否相等,不管数据类型

1 == '1'

两个的值是一样的,所以得到 true

2.===

比较符号两边的值和数据类型是否都相等

1 === '1'

两个值虽然一样,但是因为数据类型不一样,所以得到false

3.!=

比较符号两边的值是否不等

1 != '1'

因为两边的值是相等的,所以比较他们不等的时候得到false

4.!==

比较符号两边的数据类型和值是否不等

1 !== '1'

因为两边的数据类型确实不一样,所以得到true

5.>=

比较左边的值是否大于或等于右边的值

1 >= 1 true

1 >= 0 true

1 >= 2 false

6.<=

比较左边的值是否小于或等于右边的值

1 <= 2 true

1 <= 1 true

1 <= 0 false

7.>

比较左边的值是否大于右边的值

1 > 0 true

1 > 1 false

1 > 2 false

8.<

比较左边的值是否小于右边的值

1 < 2 true

1 < 1 false

1 < 0 false

9.字符串比较a' > 'b'

字符串比较 比较的是 ascii

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)

逻辑运算符

1.**&&**(同为真,则为真 ;一个为假,则为假 )

进行 且 的运算

符号左边必须为true 并且右边也是true,才会返回true

只要有一边不是true,那么就会返回false

true && true true

true && false false

false && true false

false && false false

2.**||**(一个为真,则为真 ;同为假,则为假 )

进行 或 的运算

符号的左边为true或者右边为true,都会返回true

只有两边都是false的时候才会返回false

true || true true

true || false true

false || true true

false || false false

3.!

进行取反运算

本身是true的,会变成false

本身是false的,会变成true

! true false

! false true

自增自减运算符(一元运算符)

1.++

进行自增运算

分成两种,前置++和后置++

前置++,会先把值自动+1,再返回

var a = 10
​
console.log(++a)
​
// 会返回11,并且把a的值变成11

后置++,会先把值返回,再自动+1

var a = 10
console.log(a++)
// 会返回10,然后把a的值变成11

2.--

进行自减运算

分成两种,前置--和后置--

和 ++ 运算符道理一样

3.运算符优先级

  • JavaScript中的运算符优先级是一套规则。该规则在计算表达式时控制运算符执行的顺序。

  • 具有较高优先级的运算符先于较低优先级的运算符执行。例如,乘法的执行先于加法。 下表按从最高到最低的优先级列出JavaScript运算符。

  • 具有相同优先级的运算符按从左至右的顺序求值。 


(八)练习

为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时?

分析:  已知 89小时 var hours = 89求var day = ?var h = ?隐藏条件 1天24小时89/24 -> ?天89%24 -> ?小时
小结:
变量
类型转换
数据运算
控制输出语句
字符串拼接 + 连接符 <script>var hours = 89var day = parseInt(hours / 24)var h = hours % 24console.log('战士连续作战89小时,编程计算共' + day + '天零' + h + '小时')
</script>

小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。提示:摄氏度与芈氏度的转换公式为:摄氏度 = 5/9.0*(华氏度-32),保留3位小数。变量.toFixed (3)

分析:  华氏温度(80度) -> 为摄氏度  摄氏度 = 5/9.0*(华氏度-32)var hsDeg = 80 var csDeg = ?csDeg = 5/9.0*(hsDeg-32)
<script>var hsDeg = 80var csDeg = 5 / 9.0 * (hsDeg - 32)console.log(csDeg.toFixed(3))</script>

var k = -2;
  alert(++k + k++ + ++k + k);

分析: 考查:  自增运算, ++在前和在后的区别从左向右依次运算++k + k++ + ++k + k1. k:-1 2. ++k + k++=> -1 + -1  -> -2 => k: 0 3.  ++k + k++ + ++kk: 1-14.  ++k + k++ + ++k + k=> 0

Ⅰ JavaScript基础语法相关推荐

  1. javascript基础语法——表达式

    前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression).本文将详 ...

  2. javascript基础语法——词法结构

    前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫:而说它复杂,是因为要真正掌握它则需要数年时间.实际上,前端工程师很大程度上就是指javasc ...

  3. web前端学习:1分钟了解JavaScript基础语法规则

    俗话说,"无规矩不成方圆".用在计算机语言上也同样使用.每种计算机语言都有自己的语法规则,只有遵循语法规则才能写出符合要求的代码.JavaScript也不例外,在使用JavaScr ...

  4. html5扩展函数的使用方法,知识分享:JavaScript基础语法

    知识分享:JavaScript基础语法 原创 mb5fd868d58f1472021-01-22 16:52:56©著作权 阅读数 41 ©著作权归作者所有:来自51CTO博客作者mb5fd868d5 ...

  5. 【Javascript基础语法】第五周预习博客

    Javascript基础语法 前言 一.初识JavaScript 1.JS是什么 2.作用 3.浏览器执行js简介 4.Js组成 二.JS的引入方式 1.行内式 2.内部引入 3.外部引入 三.js语 ...

  6. 前端技术学习第三讲:JavaScript基础语法

    JavaScript基础语法 JavaScript(简称"JS") 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言.虽然它是作为开发Web页面的脚本语言而出名,但是它也被 ...

  7. JavaScript基础语法(一)

    目录 前言 js变量 数据类型 数据类型转换 传送门 --> JavaScript基础语法(二).JavaScript之数组与函数(三).JavaScript之对象(四).JavaScript阶 ...

  8. RUNOOB JavaScript 基础语法

    JavaScript 基础语法 JavaScript 的特点: JavaScript是一种动态类型.弱类型.基于原型的解释型脚本语言 动态类型:变量在声明时不需要声明类型,在运行时根据被赋值类型进行转 ...

  9. JavaScript作业1(实验1:Javascript基础语法)

    1.判断今年是否闰年. <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

  10. JavaScript 基础语法循环案例练习

    JavaScript 基础语法循环案例练习 文章目录 JavaScript 基础语法循环案例练习 前言 一.早午晚安喵喵喵 二.判断奇偶数 三.班长请客 四.1-100跳过个位为3的数求和 五.第几个 ...

最新文章

  1. 【HDU】3308 LCIS
  2. FPGA中时钟相关概念
  3. Xamarin 2017.11.1更新
  4. 物联网时代下的MCU,是市场倒逼还是彼此互相成就
  5. Java 并发编程—有锁互斥机制及AQS理论
  6. 机器学习(三十)——Model-Free Control
  7. jsp超链接中怎么跳转页面跳转页面_在页面点击超链接跳到别的页面,方法是什么?...
  8. key value vue 输出_vue注意事项总结(一)
  9. 使用GNS3和Cisco IOU搭建路由交换实验-安装篇
  10. activiti学习--08 连线
  11. Dubbo透传traceId/logid的一种思路
  12. ftp登录常用命令和工作模式简介
  13. 惠普打印机爆远程命令执行漏洞,黑客可任意操纵你的打印机
  14. 用C语言写飞机小游戏
  15. GB 50312-2007 综合布线工程验收规范(含条文说明)
  16. maya之3d paint tool(3d绘制工具)
  17. 安全控件资料下载链接
  18. 常见链表面试题(下)
  19. Vue3 $set?
  20. WSO2 ESB(5)

热门文章

  1. Jenkins插件离线下载及导入
  2. 华侨大学计算机学院考研成绩,华侨大学计算机科学与技术学院2019年硕士研究生复试成绩(非全日制,第三批)...
  3. SQL Server自动产生一年多少周及月
  4. 内存脏数据下刷(linux2.6.18/linux.2.6.32)剖析
  5. HTML调用百度地图API,实现地图标注位置
  6. 规则引擎Drools详细介绍
  7. CF 111B Petya and Divisors
  8. U盘中SLC、MLC和TLC三者闪存类型的优缺点及区别
  9. Unity | HDRP高清渲染管线学习笔记:HDRP配置文件(HDRP Asset)
  10. 超级菜鸟怎么学习数据分析