JavaScript能用来做什么?页面分为:结构、样式、行为。
JavaScript的组成: ECMAScript、BOM、DOM
ECMAScript是一个标准,它规定了语法、类型、语句、关键字、保留子、操作符、对象。(相当于法律)
BOM(浏览器对象模型):可以访问浏览器窗口的浏览器对象模型,对浏览器窗口进行操作。
DOM(文档对象类型):DOM把整个页面映射成一个多层节点结构。HTML页面组成都是某种类型的节点,这些节点又包含着不同类型的数据
Javascript和HTML5的关系
HTML5是一种新的技术,就目前而言,我们所知的HTML5都是一些标签,但是有了JS之后,这些标签深层的扩展功能才得以实现
如何编写及运行JS
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部。
可以将js代码编写到外部js文件中,然后通辻script标签引入
写到外部文件中可以在不同的頁面中同吋引用,也可以利用到浏览器的缓存机制推荐使用的方式
script标签一旦用于引入外部文件了, 就不能在編写代码了,即使編写了浏览器也会忽略如果需要则可以在创建一个新的script标签用于編写内部代码
可以将js代码编写到标签的onclick属性中当我们点击按钮时,js代码才会执行
可以将js代码写在超链接的href属性中,这样当点击超链接时,会执行js代码
外联JS的写法为:
<script src="相对路径"></script>
这是一条html语句,原则上可以放在html页面的任意位置,不用和link标签一样非得放在head部分
相对路径链接的是JavaScript文件,文件的扩展名为.js,如index.js
内部JS的写法为:
<script>
//在script标签内写js脚本
</script>
向页面中打印内容:
document.write(“这是一些文本内容”);
可以直接解析标签:
document.write(“<strong>加粗的内容</strong>”);
让计算机在页面中输出一个内容
document . write()可以向body中输出一个内容document , write("看我出不出来~~~");
转义字符:
< ==== <
> ==== >
document.write(“<strong>这是一些加粗的内容</strong>”);
console.log("hello world")
向浏览器的控制台打印信息,跟document.write()原理类似
向控制台输出一一个内容
console.log( )的作用是向控制台输出一一个内容
console.1og(" 你猜我在哪出来呢? ");
alert("哥,你真帅啊! ! ");
document . write( "看我出不出来~~~");
console.log("你猜我在哪出来呢? ") ;
注释:
/*
多行注释JS注释
多行注释,注释中的内容不会被执行,但是可以在源代码中查看
要养成良好的编写注释的习惯,也可以通过注释来对代码进行一 些简单的调试
*/
//单行注释
//alert("hello");
//document . write("hello");
console.1og("hello"); //该语句用来在控制台输出一个日志
变量的概念及基本运算
如何创建一个变量?
var tom = “猫”;
var a = “<strong>加粗的内容</strong>”;
var是一个关键字,用来声明一个变量;
= 表示赋值(取名字);
声明变量以“=”为区分,左边为变量名(被赋值),右边为存放进变量中的内容(给变量赋值)。
注意:JS中的“=”号,和数学中的“=”不一样,在JS中“=”的作用是赋值(取名字)。
var 声明变量的底层原理:我们所写的程序运行在内存中,当我们使用关键字var 声明一个变量的时候,计算机会从内存中划分一个空间,为我们存放不同类型的内容做准备。
变量的类型(数据类型)
因为存放在变量中的数据是放在计算机的内存中的,计算机只识别0和1,所以需要对不同类型的数据进行转义,转义的结果会导致所需空间不同,所以JS中分成很多种数据类型,以便计算机储存时使用。
数值类型(number):1234567890
字符类型(string):"123" 'asd' "文字" "数据"(被单引号或双引号,包裹的部分,引号必须配套使用)
定义了未赋值类型(undefined):这是一种特殊类型,当变量被声明,但是没有被赋值的时候,那么该变量的类型的undefined
布尔值类型(boolean):true,false (真,假)
对象类型(object):{}object
数组类型(array):[]
数据类型指的就是字面量的类型在JS中一共有六种数据类型
String字符串
Number数值
Boolean布尔值
Null空值
Undefined未定义
object对象
其中String Number Boolean Null Undefined属于 基本数据类型而0bject属于引用数据类型
String字符串
-在JS中字符串需要使用引号引起来
-使用双引号或单引号都可以,但是不要混着用
引号不能嵌套,双引号不能放双引号,单引号不能放单引号
在字符串中我们可以使用\作为转义字符,
当表示一些特殊符号时可以使用\进行转义
\”表示"
\'表示'
\n表示换行
\t制表符
\\表示\
在JS中所有的数值都是Numper类型,包括整数和浮点数(小数)~
如何区分或得知不同的数据类型:
通过关键字 typeof 变量名
可以使用一个运算符typeof
来检查一个变量的类型语法: typeof变量
检查字符串时,会返回string检查数值时,会返回number
console.log(typeof b)
在JS中所有的数值都是Number类型,包括整数和浮点数(小数)
JS中可以表示的数字的最大值Number . MAX_ VALUE
1.7976931348623157e+308
如果使用Number表示的数字超过了最大值,则会返回一个
Infinity表示正无究人-Infinity表示负无穷
使用typeof检查Infinity也会返回Number
Number . MAX_ VALUE
1.7976931348623157e+308
如果使用Number表示的数字超辻了最大值,则会返回一个
Infinity表示正无旁-Infinity表示灸无旁
使用typeof橙査Infinity也会返回NumberNaN是一个特殊的数字,表示Not A Number
在JS中整数的运算基本可以保证精确
如果使用JS进行浮点元素,可能得到一个不精确的结果
如果使用JS进行浮点运算可能得到一个不精确的结果所以千万不要使用JS进行对精确度要求比较高的运算
Boolean布尔值
布尔值只有两个,主要用来做逻辑判断
true
-表示真
false
表示假
调用Boolean()函数来将a转换为布尔值a = Boolean(a);
a = "hello";q
console.1og(typeof a);console.1og(a);
将其他的数据炎型特換ヵBoolean--使用Boolean()凾数
-数字--->布尓
除了0和NaN,其余的都是true-字符串--->布尓
-除了空串,其余的都是trueT- null和undefined都会特換カfalSe
Nul1类型的值只有一个,就是null
null这个值专门用来表示一个为空的对象
使用typeof检查一个nul1值时, 会返回object
Null (空值)类型的值只有一个,就是nullnull这个值专门用来表示.一个为空的对象
使用typeof检查-一个nu1l值时,会返回object
Undefined (未定义)类型的值只有一个,就undefind
当声明一个变量,但是并不给变量赋值时,它的值就是undefined
Undefined (未定义)类型的值只有一个,就undefind
当声明一个变量,但是并不给变量年值时,它的值就是undefined使用typeof检查- - 个undefined时也会返回undefined
强制类型转换
-指将一个数据类型强制转换为其他的数据类型-类型转换主要指,将其他的数据类型,转换为
string Number Boolean
将其他的数据类型转化为String方式一:
-调用被转换数据类型的toString()方法
-该方法不会影响到原変量,它会将转化的結果返回
-但是注意: null和undefined这俩个値没有toString(方法,
如果调用他们的方法,会报错
方式ニ:
调用String()函数,并將被转化的数据作为参数传递給函数-使用String()函数,作为强制类型转化时
对于Number和Boolean实际上就是调用的toString()方法但是対于nul1和undefined.就不会调用toString()方法
它会将null直接转化为“null”
将undefined直接转化为"undefined"
将其他的数据类型转换Number
特換方式一:
使用Number()凾数
字符串-->数字
1.如果是纯数字的字符串,則直接將其转化为数字2.如果字符串中有非数字的内容,则转化为NaN
3.如果字符串是一个空串或者是一个全是空格的字符串,则转化为0
布尔转数字
True转成1
False 转成0
Null 转成数字0
Underfined 转成数字NaN
转换方式二:
这种方式用来对付字符串
parseInt()把一个字符串转换为一个整数
parseFloat()把一个字符串转换为一个浮点数
调用parseInt()函数将a转换为Number
parseInt()可以将一个字符串中的有效的整数内容去出来,然后转换为Number
parseFloat( )作用和pamseInt()类似,不同的是它可以获得有效的小数
如果对非String使用parseInt( )或parseFloat( )它会先將其转化为String然后在操作
进制
在js中,如果需要表示16进制的数字,则需要以0x开头
如果需要表示8进制的数字,则需要以0开头
如果要要表示2进制的数字,则需要以0b开头
但是不是所有的浏览器都支持
向"070"这种字符串,有些浏览器会当成8进制解析,有些会当成10进制解a = "070";
可以在parseInt()中传递一个第二个参数,来指定数字的进制a = parseInt(a,10);
console.1og(typeof a);
console.1og(a);
字面量,都是一些不可改变的值
比如:12345
字面量都是可以直接使用,但是我们一般都不会直接使用字面量
变量变量可以用来保存字面量, 而且变量的值是可以任意改变的
变量更加方便我们使用,所以在开发中都是通过变量去保存-一个字面量,可以通过变量对字面量进行描述
声明变量
在js中使用var关键字来声明一个变量var a;
为变量赋值a = 123;a = 456;
= 123124223423424 ;
console .1og(a);
声明和赋值同进行var b = 789;varC=0;
console.1og(c);
小技巧:声明一串变量时可以这么写,var a=1,b=2,c=3;(但是不推荐初学者这么用,因为这样的声明方式会导致注释不明确)
变量命名规则和关键字的介绍
第一个规则:
语义化,前缀就能表示出这个变量的类型
第二个规则:
开头必须为字母或者$或者_
那么能不能使用typeof做为变量名呢?想都别想!
第三个规则:
关键字和保留字不能用做变量名。
关键字:
以下这些关键字用于执行特定操作等。按照规则,关键字也是语言保留的,不能用做标识符。
保留字:未来可能做为关键字的存在
alert()方法
alert()方法用来停止浏览器加载代码,并弹出()里面的内容。
浏览器解析代码的顺序(从上到下,从左到右)
控制浏览器弹出一个警告框
alert("哥,你真帅啊!↓");
标识符
-在JS中所有的可以由我们自主命名的都可以称为是标识符-例如:变量名、函数名、属性名都属于标识符-命名一个标识符时需要遵守如下的规则:
1.标识符中可以含有字母、数字、_、$2.标识符不能以数字开头
3.标识符不能是ES中的关键字或保留字4.标识符一般都采用驼峰命名法
首字母小写,每个单词的开头字母大写,其余字母小写helloworld xxxYyyZzz|
JS底层保存标识符时实际上是采用的Unicode编码,
所以理论上讲,所有的utf-8中含有的内容都可以作为标识符
算术、赋值、关系运算符的讲解
JS中的运算符分为:算术/赋值/关系/逻辑/自增自减
算术运算符: +加法 -减法 *乘法 /除法 %取余
var a = 1, b = 2;
a + b = 3
a - b = -1
a * b = 2
a / b = 0.5
a % b = 1
目测,跟数学中的运算符是一样的。但是:
var a = "1", b = "2";
a * b = 2
a / b = 0.5
a - b = -1
a + b = ???
+号,有两层意思,第一层算数之间的加法;第二层字符串的连接;执行过程中,先检测加号两边的数据类型,如果发现字符型,那就先 生效字符的连接
数据类型转换:强制转换、隐式转换
其实还是有点不一样:和我们概念中的逻辑运算符很多都是不一样的:
比如: = == ===
并且不同数据类型之间的运算得到的结果,可能不是我们意想中的;
有什么差别呢?
赋值运算符: = += -= *= /= %=
关系运算符: < <= > >= == != ===
运算符也叫操作符
通过运算符可以对一个或多个值进行运算,并获取运算结果比如: typeof就是运算符,可以来获得-一个值的类型
它会将该值的类型以字符串的形式返回
number string boolean undefined object
任何値和字符串相加都会转化为字符串,并做拼串操作
I
我们可以利用这一特点,来将一个任意的数据类型转化为String我们只需要将任意的数据类型+一个""即可将其转化String
这是一种隐式的类型转化,由浏览器自动完成,实际上它也是调用String()函数
算数运算符
当对非Number类型的值进行运算时,会将这些值转换为Number然后在运算
口任何值和NaN做运算都得NaN
+可以对两个值进行加法运算,并将结果返回如果对两个字符串进行加法运算,则会做拼串
会将两个字符串拼接为一个字符串,并返回
任何的值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作
可以对两个值进行减法运算,并将结果返回
*
/
*可以对两个值进行乘法运算
/可以对两个值进行除法运算
%
%取模运算(取余数)
任何值做- * /运算时都会 自动转换为Number我们可以利用这一特点做隐式的类型转换
可以通过为一个值-0 *1 /1来将其转 换为Number原理和Number()函数-一样,使用起来更加简单
元运算符,只需要一个操作数+正号
一正号不会对数字产生任何影响-负号
-负号可以对数字进行负号的取反
-对于非Number类型的值,
它会将先转换为Number,然后在运算
可以对一个其他的数据类型使用+,来将其转换为number它的原理和Number()函数一样
自增++
-通过自增可以使变量在自身的基础上增加1
-对于一个变量自增以后,原变量的值会立即自增1-自增分成两种:后++(a++) 和前++(++a)
无论是a++还是++a,都会立即使原变量的值自增1
不同的是a++和++a的值不同a++的值等于原变量的值(自增前的值)++a的值等于新值(自增 后的值)
自减--
-通过自减可以使变量在自身的基础上减1
-自减分成两种:后--(a--)和前--(--a) !
无论是a--还是--a都会立即使原变量的值自减1
不同的是a--和--a的值不同
- -是变量的原值(自减前的值)--a是变量的新值(自减以后的值)
JS中为我们提供了三种逻辑运算符!非
!可以用来对一个值进行非运 算
-所谓非运算就是值对一个布尔值进行取反操作,
true变false,false变true如果对一个值进行两次取反,它不会变化
-如果对非布尔值进行元素,则会将其转换为布尔值,然后再取反
所以我们可以利用该特点,来将一个其他的数据类型转换为布尔值可以为一一个任意数据类型取两次反,来将其转换为布尔值,原理和Boolean()函数- -样
&&与
&&可以对符号两侧的值进行与运算并返回结果运算规则
-两个值中只要有一个值为●alse就返回false,
只有两个值都为true时,才会返回trueJS中的“与”属于短路的与,
如果第一个值为false,则不会看第二个值
||或
||可 以对符号两侧的值进行或运算并返回结果运算规则:
-两个值中只要有一个true,就返回true
如果两个值都为false,才返回false- JS中的“或”属于短路的或
如果第一个值为true,则不会检查第二个值
编程习惯
语句结束要加分号,虽然不加分号在JS语法上没有什么问题,但是建议不要省略分号,加了分号之后可以使用软件压缩。
这是一种良好的编程习惯(JavaScript权威指南)。
JS中严格区分大小写
JS中每-条语句以分号(;)结尾
如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,
而且有些时候,浏览器会加错分号,所以在开发中分号必须写
JS中会忽略多个空格和换行,所以我们可以利用空格和换行对代码进行格式化