JS初识

初识javascript

引导

主要内容:

学习目标:

节数知识点要求

第一节(js的前世今生)js简介了解

第二节(js的语法结构)页面引入js的几种方式了解

js输出的几种方式了解

js的语法规则了解

第三节(Javascript名词解释)数字字面量掌握

字符串字面量掌握

常量理解

第四节(Javascript变量命名规则(重点))声明变量掌握

变量提升掌握

变量的命名规则了解

第五节(Javascript数据类型(重点))基本数据类型掌握

第六节(Javascript运算符(重点))逻辑运算符掌握

什么是语言?

什么是计算机语言?

机器语言,汇编语言,高级语言。

少儿编程语言

计算机存储单位

计算机数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

1B(Byte字节)=8bit,

1KB (Kilobyte 千字节)=1024B,

1MB (Mega byte 兆字节 简称“兆”)=1024KB,

1GB (Giga byte 吉字节 又称“千兆”)=1024MB,

1TB (Tera byte 万亿字节 太字节)=1024GB,其中1024=2^10 ( 2 的10次方),

1PB(Peta byte 千万亿字节 拍字节)=1024TB,

1EB(Exa byte 百亿亿字节 艾字节)=1024PB,

1ZB (Zetta byte 十万亿亿字节 泽字节)= 1024 EB,

1YB (Yotta byte 一亿亿亿字节 尧字节)= 1024 ZB,

1BB (Bronto byte 一千亿亿亿字节)= 1024 YB,

Javascript简介

js的前世今生

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,最早是在HTML网页上使用,用来给HTML网页增加动态功能。

**动态:**在运行时确定数据类型。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。

**弱类:**计算时可以不同类型之间对使用者透明地隐式转换,即使类型不正确,也能通过隐式转换来得到正确的类型。

**原型:**新对象继承对象(作为模版),将自身的属性共享给新对象,模版对象称为原型。这样新对象实例化后不但可以享有自己创建时和运行时定义的属性,而且可以享有原型对象的属性。

脚本语言:不需要编译器编译。

在1995年时,由Netscape公司的布兰登·艾奇(Brendan Eich,1961年~),JavaScript的发明人,在网景导航者浏览器(Navigator)上首次设计实现而成。

由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。

为什么起名叫JavaScript?原因是当时Java语言非常红火,所以网景公司希望借Java的名气来推广,但事实上JavaScript除了语法上有点像Java,其他部分基本上没啥关系。

Netscape在最初将其脚本语言命名为LiveScript,后来Netscape在与Sun合作之后将其改名为JavaScript。

Javascript的三个主要组成部分是:ECMAScript(核心),DOM(文档对象模型),BOM(浏览器对象模型)。

和Java区别

js的特点

1、是一种解释性脚本语言(代码不进行预编译)。

2、主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。

3、可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。

4、跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等

5、它是单线程编程语言

js在网页中的应用

表单的验证,放大镜,添加购物车等

ECMAScript 和 JavaScript 的关系

​ 1996 年 11 月,JavaScript 的创造者Netscape公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。

​ 因为网景开发了JavaScript,一年后微软模仿JavaScript开发了JScript,为了让JavaScript成为全球标准,几个公司联合ECMA(European Computer Manufacturers Association)组织定制了JavaScript语言的标准,被称为ECMAScript标准

所以简单说来就是,ECMAScript是一种语言标准,而JavaScript是网景公司对ECMAScript标准的一种实现。那为什么不直接把JavaScript定为标准呢?因为JavaScript是网景的注册商标。不过大多数时候,我们还是用JavaScript这个词。如果你遇到ECMAScript这个词,简单把它替换为JavaScript就行了。

由于JavaScript的标准——ECMAScript在不断发展,最新版ECMAScript 6标准(简称ES6,有时也被称为ES2015)已经在2015年6月正式发布了,所以,讲到JavaScript的版本,实际上就是说它实现了ECMAScript标准的哪个版本。

###Javascript发展历史

1995年12月4日 Netscape公司与Sun公司联合发布了JavaScript语言。

1996年03月 Navigator 2.0浏览器正式内置了JavaScript脚本语言。

1997年07月 ECMAScript 1.0发布。

1998年06月 ECMAScript 2.0版发布。

1999年12月 ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。

2007年10月 ECMAScript 4.0版草案发布

2009年12月 ECMAScript 5.0版正式发布

2015年06月 ECMAScript 6正式发布

###各个主要浏览器内核和引擎

​ 一个完整的浏览器包含浏览器内核和浏览器的外壳(shell)。浏览器核心——内核分成两部分:渲染引擎和js引擎。

​ 浏览器内核主要指的是浏览器的渲染引擎,2013 年以前,代表有 Trident(IE),Gecko(firefox),Webkit(Safari chrome 等)以及 Presto(opera)。2013 年以后,谷歌开始研发 blink 引擎,chrome 28 以后开始使用,而 opera 则放弃了自主研发的 Presto 引擎,投入谷歌怀抱,和谷歌一起研发 blink 引擎,国内各种 chrome系的浏览器(360、UC、QQ、2345 等等)也纷纷放弃 webkit,投入 blink 的怀抱。

​ 2015年微软推出自己新的浏览器,原名叫斯巴达,后改名edge,使用edge引擎

edge浏览器仍然使用Chakra引擎

1、IE浏览器内核:Trident内核,也是俗称的IE内核;

2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;

3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;

4、Safari浏览器内核:Webkit内核;

5、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核;

6、360浏览器、猎豹浏览器内核:IE+Chrome双内核;

7、搜狗、遨游、QQ浏览器内核:Trident(兼容模式)+Webkit(高速模式);

8、百度浏览器、世界之窗内核:IE内核;

9、2345浏览器内核:以前是IE内核,现在也是IE+Chrome双内核;

常用的IDE介绍

IDE:集成开发环境(Integrated Development Environment )

Webstorm,visual studio code,sublime,atom,hbuilder,editplus,nodepad等

vscode的使用

js的语法结构

页面引入js的几种方式

第一种方式:内部方式

第二种方式:外部结构

第三种方式:行内方式

js输出的几种方式

1、使用 window.alert() 弹出警告框。

2、使用 document.write() 方法将内容写到 HTML 文档中。

3、使用 innerHTML 写入到 HTML 元素。

4、使用 console.log() 写入到浏览器的控制台。

js的语法规则

1、分号是语句结束的标志,分号不是必须的,我们不建议这样做,严格来说,语句要加上分号。

2、 js会忽略多个空格和换行。

3、字符集

**utf-8:**统一国际编码,兼容各个国家的语言

gb2312/gbk:简体中文编码

big5:繁体中文编码

4、变量区分大小写

5、注释

回顾一下html注释:

回顾一下css的注释:

/*内容*/

js的注释语句

单行注释://内容

多行注释:/*内容*/

问:为什么要加注释?

答:为了方便别人也是为了方便自己。

Javascript名词解释

**在编程语言中,一般固定值称为字面量,如 3.14。**给变量赋值时,等号右边都可以认为是字面量。英语叫做literals,有些书上叫做直接量。

数字字面量

25,98.23

var num = 92;

字符串字面量

‘123’,“Hello”

[12,2,3]

常量

什么是常量?

常量:就是其值不能改变的。

怎样定义一个常量?

const HOST = “localhost”;

const也是块级作用域

const声明的常量必须初识化,而let声明的变量不用

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址所保存的数据不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针,const只能保证这个指针是固定的(即总是指向另一个固定的地址),至于它指向的数据结构是不是可变的,就完全不能控制了

Javascript变量命名规则(重点)

声明变量

变量是干什么的,是存储数据的,那存储什么种类数据呢?

声明变量使用关键字:var(variable)

你给它赋什么类型的值,那么这个变量就是什么数据类型。

内存中堆区和栈区

单独声明

多个变量声明,中间用逗号隔开

重复声明

遗漏声明

显式声明与隐式声明区别

JS中变量声明分显式声明和隐式声明。

var name = 'muzidigbig';//显式声明

name = 'muzidigbig';//隐式声明(为全局对象(window)的一个属性)

JavaScript 严格模式(use strict)

变量提升

变量一定要先声明后使用,如果先使用后声明,js的内部机制自然使变量提升。

let 和var 的区别

var: variable,它是可变的。

let: 块作用域。

变量名的命名规则

变量的命名:变量是由字母、数字、下划线、$ 组成,但第一个字符必须是字母或者是下划线、$开头。

$不建议使用,它可能会和其他的框架语法冲突,或者是函数的名字冲突

1、JavaScript语言的标识符对大小写敏感,所以a和A是两个不同的标识符。

2、首字母可以是任意字母以及美元符号和下划线。剩余可以是任意字母,美元符号,下划线和数字

3、不能使用javascript中的关键字(保留字)来命名变量

4、中文也可以声明变量,不建议使用它。

变量的命名方式

第一种命名:帕斯卡命名(大驼峰式命名

每个单词的首字符大写

例如:UserName。

第二种命名小驼峰式命名

首个单词的首字母小写其他后面单词的首字母大写

例如:

例如:userName

第三种命名匈牙利式命名

数据类型+单词(变量名)

Integer+age

varIage=25;

String+address

varSaddress=“西安”;

Javascript数据类型(重点)

数据类型分类:

在此基本的数据类型的基础上又增加了一个基本数据类型:Symbol,Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。

打印变量的数据类型:typeof

请注意:

NaN 的数据类型是 number

数组(Array)的数据类型是 object

日期(Date)的数据类型为 object

null 的数据类型是 object

未定义变量的数据类型为 undefined

基本数据类型

数字类型(number)

c 语言中:

int(整数),float(单精度浮点型),double(双精度浮点型),char(字符)

string(字符串)。

二进制(binary):0b101010101

八进制:0o2535

十六进制:0x69852

进制转换:

toString():十进制转换其他的进制

parseInt():其他的进制转换十进制

最大值:MAX_VALUE

最小值:MIN_VALUE

浮点数不能比较

NaN:Not a Number:不是一个数值

一些特殊情况(除数为0,最大值变化)

布尔类型(boolean)

true(真),false(假),都是小写的。

TRUE,FALSE,True,False:这些都不正确。

字符串类型(string)

字符串:加单引号或者是双引号

字符串连接:使用的是+

模板字符串:

undefined

typeof undefined

null

typeof null

null == undefined

null和undefined的区别

1、类型不相等

2、强制类型转换值不一样

varre1=Number(undefined);//NaNvarre2=Number(null);//0

3、比较

null==undefined;//truenull===undefined;//false

引用类型(object)

Javascript运算符(重点)

算术运算符

+,-,*,/,%(求余数),++,–,**(求幂数-es7新增)

实例练习:

一元运算符

+(正),-(负数),++,–

两数交换

比较(关系)运算符

>,<,>=,<=,!=,!(不全等),,===(全等:值和类型都相等)

逻辑运算符

1、&&:逻辑与,所有运算操作数都为真,运算结果才为真

true&&true;//truefalse&&true;//falsetrue&&false;//falsefalse&&false;//false

总结说明:

如果前面的表达式是true,就取后面的值,如果前面的表达式为false,就取前面的值。

2、||:逻辑或,只要运算操作数其中一个为真结果就为真。

true||true;//truefalse||true;//truetrue||false;//truefalse||false;//false

总结说明:

如果前面的表达式是true,就取前面的值,如果前面的表达式为false,就取后面的值。

3、!:逻辑非,取反运算

例题:

console.log(10&&'js');//js  console.log(0&&'abc');//0 console.log(10||'js');//10  console.log(0||'abc');//abc 

怎样输出:true和false

console.log(Boolean(0)&&Boolean('abc'));

短路问题:输出结果是?

赋值运算符

=,+=,-=,*=,/=,%=

=:赋值

==:比较(等于)

===:比较(全等)

条件运算符(三目运算符)

表达式1?表达式2:表达式3

如果表达式1为真(true),计算表达式2的值,如果为假(false),计算表达式3的值。

等性运算符

Null==undefined;//trueNull===undefined;//falsetrue==1;false==0;NaN==NaN;//falseNaN!==NaN;//true

运算符的优先级

隐式类型转换

强制类型转换

Number():转化成数值

只有纯数字的才能转换得到真实数字。

布尔类型转换为Number:true 转换为1、false转换为0。

未定义类型转换为Number:underfind 转换为NaN

空类型转换为Number:null 转换为0

String():转化成字符串

Boolean():转化成布尔

总结说明:

1. NaN ,0 ,"", ‘’ ,underfind, null 转换为:false。

2. 正数,负数都是:true

3. 只要不是空字符串都是:true

parseInt():将字符串转化为整数

parseFloat():将字符串转化为浮点数

作业:

1、变量加var和不加var的区别

2、变量的提升

3、短路的应用

你可能感兴趣的:(JS初识)