03.JS基础
2020-01-09 12:44:06 0 举报
AI智能生成
js 基础
作者其他创作
大纲/内容
数据类型
声明变量类型
当您声明新变量时,可以使用关键词 "new" 来声明其类型:
简单数据类型(存在内存中的栈空间)
字符串(String)
JavaScript 字符串用于存储和处理文本。
字符串可以是引号中的任意文本。可以使用单引号或双引号:
可以使用索引位置来访问字符串中的每个字符:
如:var character = carname[7];
字符串的索引从 0 开始
可以使用内置属性 length 来计算字符串的长度:
字符串中可以使用转义字符转义的特殊字符:
字符串属性
字符串方法
在任何语言中,只要是用户输入的内容就是字符串类型
prompt()
数字(Number)
JavaScript 只有一种数字类型。数字可以带小数点,也可以不带
一定不要用引号引起来
布尔(Boolean)
布尔(逻辑)只能有两个值:true 或 false。
空(Null)
可以通过将变量的值设置为 null 来清空变量。
on.事件 + null 可以取消事件
未定义(Undefined)
Undefined 这个值表示变量不含有值。
变量声明了,但未赋值
还表示函数没有真正返回值的默认值
复杂数据类型(存在内存中的堆空间)
对象(Object)
对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:
数组(Array)
数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。
函数(function)
RegExp
Date
...
类型转换
typeof 操作符
查看 JavaScript 变量的数据类型
typeof 后面跟变量名称
typeof 操作符的操作数可以是变量,也可以是数值字面量
其它的数据类型转换为number
隐式类型转换: + - * / %
其他数据如果不是number类型,进行- * / %运算时,会隐式先转换为number再计算
+需要 放在前面
两边都不是字符串时,就是数学的运算.
true :1 /false:0/ null :0
NaN
not a number 不是一个数字
NaN 是属于number类型,表示数字的一种不正常状态,也就是说本来应该进行数学运算的值没有转换成number
js中特别的安排了一个这么一个NaN的值,有了这个值程序就不报错了
是非常特殊的,特殊到和任何值都不相等,即使自己也不相等,所以任何与NaN的数学运算,最终的结果都是NaN
显式(强制)类型转换,使用函数
Number()
a.如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字。
b.如果不可以转换那么返回NaN.
c.如果在内容中出现小数,那么小数会保留。
d.如果内容为空,那么转换成0;
parseInt()
a.如果转换的内容可以转成数字,那么就直接返回这个内容对应的数字。
b.如果不可以转换那么返回NaN.
c.如果带有小数,那么会去掉小数,而不是四舍五入。
d.如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非数字符号为止.
parseFloat()
特点与parseInt()几乎一样,不同点就是parseFloat()可以转换小数部分
分支主题
其它数据类型转string
隐式类型转换 +
不改变原值;加上一个空值 ("").
显式(强制)类型转换 toString()
任何数据值都有toString()方法,
特殊的两个是没有toString()方法的,是undefined 和 null 但可以用String()
其它数据类型转boolean类型
隐式类型转换 !!
显式(强制)类型转换 Boolean()
转换为boolean类型为false,的只有这几种
0
number 0
NaN
""(真空值)
null
undefined
false
isNaN()
是的它不是一个数字
结果是一个boolean类型的值.
返回值
如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。
isNaN() 函数用于检查其参数是否是非数字值。
数据类型存储位置及比较
JS中的变量都是保存到栈内存中的,
基本数据类型的值直接在栈内存中存储,
值与值之间是独立存在,修改一个变量不会影响其他的变量
对象是保存到堆内存中的,每创建一个新的对象,就会在堆内存中开辟出一个新的空间,
变量保存的是对象的内存地址(对象的引用),如果两个变量保存的是同一个对象引用,
当一个通过一个变量修改属性时,另一个也会受到影响
比较
当比较两个基本数据类型的值时,就是比较值。
而比较两个引用数据类型时,它是比较的对象的内存地址,
如果两个对象是一摸一样的,但是地址不同,它也会返回false
运算符
算术运算符
算术运算符用于执行变量 与/或 值之间的算术运算
二元运算符
+ 加法
用于字符串的 + 运算
如需把两个或多个字符串变量连接起来,使用 + 运算符
对字符串和数字的 + 运算
两个数字相加,返回数字相加的和
规则:如果把数字与字符串相加,结果将成为字符串!
- 减法
* 乘法
/ 除法
% 取模(余数)
一元运算符
++ 自增
++n 前加
n++ 后加
-- 自减
--n前减
n-- 后减
赋值运算符
赋值运算符用于给 JavaScript 变量赋值。
= x=y
+= x+=y
-= x-=y
*= x*=y
/= x/=y
%= x%=y
赋值运算符:不管哪种语言都是先计算赋值运算右边的结果
关系运算符
比较运算符在逻辑语句中使用,以测定变量或值是否相等
结果为true /false
== 等于
只判断值是否相等
=== 绝对等于(值和类型均相等)
先判断类型是否一致,再判断值是否相等
!=不等于
!==绝对不等于(值或类型不相等)
>大于
>=大于或等于
<小于
<=小于或等于
逻辑运算符
逻辑运算符用于测定变量或值之间的逻辑。
&& 与and
|| 或or
! 非 not
短路运算
如果逻辑运算符两边是boolean类型的时候,进行的是逻辑运算,如果两边不是boolean类型的时候,则进行短路运算。
&& 找假
|| 找真
条件(三元)运算符
基于某些条件对变量进行赋值的条件运算符
语法: variablename=(condition)?value1:value2
对象运算符
in/instansesof/new/delete/.及[]/()
in
* - 通过该运算符可以检查一个对象中是否含有指定的属性
* 如果有则返回true,没有则返回false
* - 语法:"属性名" in 对象
delete
* 语法:delete 对象.属性名
位运算符
其他运算符
typeof
类型判断
, 逗号
在一行语句中执行多个不同的操作
void
舍弃运算数的值,返回undefined作为表达式的值
运算符的优先级
优先级从高到底
() 优先级最高
一元算术运算符 ++ -- !
二元算数运算符 先 * / % 后 + -
关系(比较)运算符 > >= < <=
关系(相等)运算符 == != === !==
逻辑运算符 先&& 后||
赋值运算符 =
就是四部分: 算术 > 关系 > 逻辑 > 赋值
流程语句
选择语句
if 语句
只有当指定条件为 true 时,使用该语句来执行代码
condition 一般是boolean类型的值,或是关系表达式或逻辑表达式
如果不是boolean 值,会隐式转换为boolean值
if...else 语句
当条件为 true 时执行代码,当条件为 false 时执行其他代码
else 为非必要项,下同
if...else if....else 语句
使用该语句来选择多个代码块之一来执行
JavaScript三元(目)运算
当条件为true 时执行代码,当条件为 false 时执行其他代码
注意:if...else与三目运算这两者的区别,总结为一句话:三目运算有返回值,if else没有返回值
switch...case语句
使用该语句来选择多个代码块之一来执行
请使用 default 关键词来规定匹配不存在时做的事情:
多用于定值的分支判断
default非必要项
循环语句
for - 循环代码块一定的次数
循环的嵌套
9*9 乘法表
打印正方形
打印三角形
for/in - 循环遍历对象的属性
while - 当指定的条件为 true 时循环指定的代码块
do/while - 同样当指定的条件为 true 时循环指定的代码块
while与do-while的区别
语法不同
初始值不满足循环条件时:
while循环一次都不执行
do-while循环会执行一次
跳转语句
return 终止函数运行,并返回一个值
break 语句用于跳出循环。
break也用于跳出switch-case结构
continue 用于跳过循环中的一个迭代。
异常处理语句
try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
数组
数组可以一次性存储多个数据
数组是数据的有序列表 有序指的是有顺序,也就是数据在数组里面的排列是有序号的,这个序号称为索引或是下标,,默认是从0开始的。
数组是在内存当中开辟一块连续的空间来存储
声明/定义数组的两种方式:
第一种: 使用new+构造函数的方式
new 是构造 创建 创立
//如果使用这种方式定义数组的话,只有一个阿拉伯数字的参数的话,不是表示的数组的元素,而表示的是数组的长度,如:var arr = new Array(10);
第二种: 数组字面量的方式
使用length属性来检测数组的长度。
js中的数组可以存储任意类型的值
二维/多维数组
数据的获取arr[][];
稀疏数组
中间部分没有值
后台强类型的语言中的数组只能存储固定的一种类型
应用方面
arr[arr.length]:给数组添加一个新元素
同arr.push()
取出数组里面的某一个元素: 数组名[索引]
最后一个元素:最大索引:array.length-1
对于数组里面,超过了最大索引的选项,获取到的值是undefined
函数
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。
函数的组成(三要素)
函数名称(函数功能)
函数名称 一般为动词,变量名称一般为名词
参数
形参
在定义函数的时候,写的参数就是形参,是形式意义上的参数,起占位置的作用。
定义形参就相当于在函数作用域中声明了变量
实参
在调用函数的时候,传进来的数据才是实参,这是具有实际意义的数据值。
实参的个数多于形参的个数,多出来的参数会被丢弃
实参的个数少于形参的个数,缺少的参数的值是undefined( //不推荐这么做)
返回值
函数通过return关键字返回值。
return 关键字用法
* 1. 如果函数内部有真正的数据需要返回,则使用return关键字,在return后面跟上要返回的数据,然后跳出当前函数
* 2. 如果函数内部没有真正的数据返回,但是也使用了return关键字,表示退出当前函数
* 3. 也就是说无论有没有真正的数据要返回,只要是函数内部使用return关键字,就表示退出当前函数,return后面的代码都不会执行.
分支主题
书本上的解释
1. 如果函数没有显示使用 return语句 ,那么函数有默认的返回值:undefined
2. 如果函数使用 return语句,那么跟在return后面的值,就成了函数的返回值
3. 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
4. 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。
5. 一个函数当中,一般只能有一个返回值,推荐的做法是要么让函数始终都返回一个值,要么永远都不要返回值。
6. 如果想让一个函数有多个返回值的话,可以把返回值放在数组当中或是对象当中。
定义函数
方式1:函数声明
方式2:函数表达式
一般用在;事件或定时器上;如
事件:btn.onclick = function(){}
定时器:var timer = setInterval(function(){},20};
两种定义的区别
预解析
使用声明的方式定义的函数,可以在当前作用域的任何地方调用
调用函数
语法:函数名称()
函数声明完了,自己是不会执行的,只有调用才会执行
函数的四种形式:
1. 无参无返回值
比如: tellStory();
2. 有参无返回值
比如: alert(“弹出一个对话框”);
3. 无参有返回值
比如: Math.random();
4. 有参有返回值
比如 getMoney() prompt() Number() parseInt() parseFloat() String();
js预解析
js在真正的解析代码之前,会先把所有的代码扫描一遍,会将变量的声明,函数的声明提升到当前作用域的最前面.
1. 预解析会把变量的声明提升到当前作用域的顶部,只会提升声明,不会提升赋值
2. 预解析会把函数的声明提升到当前作用域的顶部,只会提升声明,不会提升调用
3. 先提升var,后提升function
作用域
作用域:变量可以起作用的范围
全局作用域
在任何地方都可以访问到的变量就是全局变量
局部作用域
只在固定的代码片段内可访问到的变量,最常见的例如函数内部。对应局部作用域(函数作用域)
词法作用域
作用域链
全局变量
在全局作用域内定义的变量或是在函数内部不使用var 声明的变量,都是全局变量
局部变量
在函数内部使用var声明的变量就是局部变量,只能在函数内部 使用
不同的函数中可以使用名称相同的局部变量
js当中没有块级作用域 {}就代表一个代码块
区别
1. 全局变量可以在任意的地方使用或是调用 ,在全局里面或是局部(函数内部)
2. 局部变量只能在函数内部使用,外部不可以调用
变量生命周期
变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁。
js中没有函数的重载
如果函数名相同的话,后面的函数会将前面的函数给覆盖掉
伪数组对象 arguments
js中提供了一个伪数组对象 arguments 这个伪数组对象 只存在于函数内部,默认是由系统提供给我们的,这个对象里面存储着传递过来的一切数据
// 伪数组:就是不是通过new Array()的方式创建出来的,但是用法和数组几乎是一模一样的,也有length属性来获取长度,也可以遍历获取伪数组中的每一项数据
匿名函数;(了解)
没有名字的函数,赋值给一个变量
自执行函数
只执行一次或只调用一次的函数
用于库/框架
有(());或()() 两种方式;
回调函数(了解)
函数可以作为函数的参数,这个作为参数的函数叫回调函数。
对象
对象的概念
对象是无序属性的集合或是键值对的集合
对象的组成:
属性
属性就相当于是之前的变量 都是用来存储数据用的
方法
就是相当于是原来的函数 表示对象 的某种作用或是行为(或者可以完成的功能)。
对象的分类:
分支主题
1.内置对象
- 由ES标准中定义的对象,在任何的ES的实现中都可以使用
- 比如:Math String Number Boolean Function Object....
2.宿主对象
- 由JS的运行环境提供的对象,目前来讲主要指由浏览器提供的对象
- 比如 BOM DOM
3.自定义对象
- 由开发人员自己创建的对象
内置对象
Math
是封装了一些数学运算相关的方法或属性;
Math是一个静态对象,使用的时候,直接用Math对象来调用,对应的属性或是方法不用new
Math.PI
圆周率3.14...
Math.pow()
多少次方
Math.round()
四舍五入
Math.ceil()
向上取整,天花板数
Math.floor()
向下取整,地板数
Math.abs()
绝对值
Math.max()
最大值
Math.min()
最小值
Math.random()
0-1,间的随机小数,不能取到1;
Date
是封装了一些日期相关的方法或属性;
日期的本质是13位阿拉伯数字;
实例对象 ,使用时要用 new
构造函数可以接受三种参数
"2016-07-25 10:14:09:991" 字符串的日期格式
2005,9,1日期的每一部分,注意月份是从0开始的
表示日期的毫秒形式1128096000000
日期格式化
日期转换成字符串:
var date = new Date();
console.log(date.toString()); 接打印date,默认调用toString方法
console.log(date.toLocaleString());
console.log(date.toDateString());
console.log(date.toLocaleDateString());
console.log(date.toTimeString());
console.log(date.toLocaleTimeString());
日期转换成毫秒值
var date = new Date();
console.log(+date); 将日期转换成毫秒值(最通用)
console.log(date.valueOf()); 将日期转换成毫秒值
console.log(Date.now()); 将当前日期转换成毫秒值,H5方法,IE678不兼容
console.log(Date.parse("2015-10-09")); 将指定日期转换成毫秒值
获取日期中的指定部分
getTime() 返回毫秒数和valueOf()结果一样
getMilliseconds() :获取毫秒值
getSeconds() :获取秒
getMinutes() :获取分钟
getHours() :获取小时
getDay() :获取星期,0-6 0:星期天
getDate() :获取日,即当月的第几天
getMonth() :返回月份,注意从0开始计算,这个地方坑爹,0-11
getFullYear() :返回4位的年份 如 2016
Array
实例对象,使用时要new
length属性
获取数组元素的个数
获取元素在数组中的索引位置
indexOf()
indexOf()查找数组中元素第一次出现的位置,如果找不到,返回-1
indexOf(searchElement, [fromIndex])
参数1:需要查找的元素
参数2:开始查找的位置
lastindexOf()
同上向左找
添加或删除数组
push()
从后面推入元素,返回新数组的length
pop()
从后面删除元素,返回被删除的元素
shift()
从前面删除元素,返回被删除的元素
unshift()
从前面添加元素,返回新数组的length
join()
作用:将数组的值拼接成字符串,括号内可加 各种符号,默认以","连接
toString()
返回值与没有参数的 join() 方法返回的字符串相同。
concat()
注意:concat并不会影响原来的数组
将参数里面的值合并到数组里面,组成一个新的数组并返回。
语法:concat(value1, value2,....)
参数:可以是一个数组,也可以是值。
slice()
复制数组的一部分到一个新数组,并返回这个数组。
语法:slice(begin[,end]);
参数1:开始位置, 参数2:结束位置,可选
注意:
1.slice方法截取数组只包含begin,不包含end。
2.slice方法的参数可以是负数,表示从后面往前数第几个元素,(慎用,容易搞混)
3.slice方法不会影响到原来的数组。
splice()
splice() 方法用新元素替换旧元素,以此修改数组的内容。
语法:slice(start, deleteCount, [items]);
参数1:开始位置
参数2:删除的个数
参数3:需要替换的数组
splice()方法会先根据参数1和参数2删除对应的元素,然后将参数3添加到删除元素的位置,如果参数3没有传,那么只会删除数组对应的元素。
如:第二个参数为0; 功能为插入数组
reverse()
翻转数组
sort()
数组排序
console.log(arr.sort());//默认按字符的ascii编码进行排序的
//带参数的sort方法
console.log(arr.sort(function (a, b) {
//如果返回值<0,a在b的前面
//如果返回值等于,ab位置不变
//如果返回值>0,b在a的前面
return a - b;
清空数组3种方式
splice(0,arr.length)
arr.length=0;
arr=[ ] (推荐使用)
String
字符串是字符的数组,
charAt()
获取指定位置字符
str()
同charAt(),低版本浏览器不支持
concat()
连接
一般使用"+"代替
slice()
截取字符串中的元素
原数组不变
用法同Array slice 一致
传入负数时有差别
substring()
同slice
传入负数时有差别
substr()
indexOf()/lastIndexof()
同 Array 中用法一致
trim()
去除字符串,前后的空格
大小写转换
toUpperCase
toLowerCase
replace()
替换
从左往右找到第一个替换
split()
切割字符串,以某个分割符切割,然后将切割后的数据值,存到数组中.
如果需对每个字母分割,split("")
...
自定义对象
创建/定义对象两种方法
new + 构造函数
使用new关键字调用的函数,是构造函数constructor
如:var obj = new Object();
new
// 1. 创建一个空对象
// 2. 将this指向这个空对象
// 3. 执行构造函数里面的代码 给对象 的属性赋值
// 4. 返回创建的对象 返回this
对象字面量
使用对象字面量,可以在创建对象时,直接指定对象中的属性
语法:{属性名:属性值,属性名:属性值....}
对象字面量的属性名可以加引号也可以不加,建议不加,
如果要使用一些特殊的名字,则必须加引号
属性名和属性值是一组一组的名值对结构,
名和值之间使用:连接,多个名值对之间使用,隔开
如果一个属性之后没有其他的属性了,就不要写,
对象的属性
在对象中保存的值称为属性
访问对象属性 的两种方式
.的方式
// console.log(obj.name);
一个是[ ]
// console.log(obj['name']);
向对象添加属性
语法:对象.属性名 = 属性值;
修改对象的属性值
语法:对象.属性名 = 新值
删除对象的属性
语法:delete 对象.属性名
属性名
- 对象的属性名不强制要求遵守标识符的规范
什么乱七八糟的名字都可以使用
- 但是我们使用是还是尽量按照标识符的规范去做
如果要使用特殊的属性名,不能采用.的方式来操作
需要使用另一种方式:
语法:对象["属性名"] = 属性值
读取时也需要采用这种方式
使用[ ]这种形式去操作属性,更加的灵活,
在[ ]中可以直接传递一个变量,这样变量值是多少就会读取那个属性
属性值
JS对象的属性值,可以是任意的数据类型
甚至也可以是一个对象
in 运算符
- 通过该运算符可以检查一个对象中是否含有指定的属性
如果有则返回true,没有则返回false
- 语法:"属性名" in 对象
函数也可以称为对象的属性
如果一个函数作为一个对象的属性保存, 那么我们称这个函数时这个对象的方法
调用这个函数就说调用对象的方法(method) 但是它只是名称上的区别没有其他的区别
函数 function
- 函数也是一个对象
- 函数中可以封装一些功能(代码),在需要时可以执行这些功能(代码)
- 函数中可以保存一些代码在需要的时候调用
- 使用typeof检查一个函数对象时,会返回function
遍历对象
使用for ... in 语句
语法: for(var 变量 in 对象){}
for...in语句 对象中有几个属性,循环体就会执行几次
每次执行时,会将对象中的一个属性的名字赋值给变量
JSON
javascript object notation
JSON 是用于存储和传输数据的格式。
JSON 通常用于服务端向网页传递数据 。
传输数据的格式主要有JSON 和 xml
JSON对象,与其他对象不同点是:属性名都要加双引号
作用域
全局作用域
- 直接编写在script标签中的JS代码,都在全局作用域
- 全局作用域在页面打开时创建,在页面关闭时销毁
- 在全局作用域中有一个全局对象window,
它代表的是一个浏览器的窗口,它由浏览器创建我们可以直接使用
- 在全局作用域中:
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
- 全局作用域中的变量都是全局变量,
在页面的任意的部分都可以访问的到
函数作用域
- 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
- 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
- 在函数作用域中可以访问到全局作用域的变量
在全局作用域中无法访问到函数作用域的变量
- 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用
如果没有则向上一级作用域中寻找,直到找到全局作用域,
如果全局作用域中依然没有找到,则会报错ReferenceError
- 在函数中要访问全局变量可以使用window对象
this
解析器在调用函数每次都会向函数内部传递进一个隐含的参数, 这个隐含的参数就是this,this指向的是一个对象, 这个对象我们称为函数执行的 上下文对象,
根据函数的调用方式的不同,this会指向不同的对象
this使用情况
* 1.以函数形式调用时,this永远都是window
* 2.以方法的形式调用时,this是调用方法的对象
* 3.以构造函数的形式调用时,this是新创建的那个对象
* 4.使用call和apply调用时,this是指定的那个对象
call()和apply()
* - 这两个方法都是函数对象的方法,需要通过函数对象来调用
* - 当对函数调用call()和apply()都会调用函数执行
* - 在调用call()和apply()可以将一个对象指定为第一个参数
* 此时这个对象将会成为函数执行时的this
* - call()方法可以将实参在对象之后依次传递
* - apply()方法需要将实参封装到一个数组中统一传递
js组成
ECMAScript js的基础语法
DOM 文档对象模型
BOM 浏览对象模型
js书写位置
位于 <script> 与 </script> 标签之间
书写位置
1.行内式 写在html标签内
2.内嵌式 写在页面的script标签间
在body内
在页面载入时脚本就会被执行。
在head内
当脚本被调用时,或者当事件被触发时,脚本就会被执行。
使用内嵌的话 推荐写在html标签的最后
3.外链式 写在一个单独的js文件中,然后引入进来
可以在若干个页面中运行相同的JS脚本。
外部文件不能包含 <script> 标签。
把 .js 文件指定给 <script> 标签中的 "src" 属性,
Js的语言特性
JavaScript是世界上用的最多的脚本语言
脚本语言:不需要编译,只有运行时边解析边执行的语言
JavaScript是一种客户端的脚本语言
JavaScript是一种弱类型的动态语言(动态添加一些属性或是方法)
弱类型
js语言对变量里面存储数据类型要求不严格,js中的变量可以存储任意的数据类型,当浏览器的js引擎真正解析变量时,才会最终确定里面存储的类型.
所有变量的声明,都使用一个关键字 var
动态:
可以随时动态的给对象添加属性和方法
可以随时的更改数组中的元素
调试输出
创建三种消息框
警告框
alert("文本")
确认框
confirm("文本")
提示框
prompt("文本","默认值")
在任何语言中,只要是用户输入的内容就是字符串类型
使用 console.log() 写入到浏览器的控制台。
F12 /ctrl+shift+j
console.table().可以将对象以表格方式输出;
部分浏览器不支持;
使用 document.write() 方法将内容写到 HTML 文档中。
以上输入文本是数字时,可以不用引号;另外变量也不能加引号;
语法基础
字面量
字面量是一个常量
直接量:直接量就是可以拿过来直接使用的数据值。
数字(Number)字面量 可以是整数或者是小数,或者是科学计数(e)。
字符串(String)字面量 可以使用单引号或双引号 :
表达式字面量 用于计算:
一切有值的式子都可以称为表达式
如:20 "abc" 5+3
数组(Array)字面量 定义一个数组:
对象(Object)字面量 定义一个对象:
函数(Function)字面量 定义一个函数:
变量
变量用于存储数据值。
使用关键字 var 来定义变量, 使用等号(=)来为变量赋值:
变量可以通过变量名访问。在指令式语言中,变量通常是可变的。字面量是一个恒定的值。
操作符
使用 算术运算符 来计算值:
使用赋值运算符给变量赋值:
....(详细参照后面章节)
语句
在 HTML 中,JavaScript 语句向浏览器发出的命令。
语句是用分号分隔的
使用分号的另一用处是在一行中编写多条语句。
代码
JavaScript 代码是 JavaScript 语句的序列。
浏览器按照编写顺序依次执行每条语句。
代码块
代码块的作用是一并地执行语句序列。
代码块以左花括号开始,以右花括号结束。
语句通常以一个 语句标识符 为开始,并执行该语句。
语句标识符是保留关键字不能作为变量名使用。
关键词
语句通常以关键词为开头。
如: var 关键词告诉浏览器创建一个新的变量:
标识符
标识符必须以字母、下划线(_)或美元符($)开始。
后续的字符可以是字母、数字、下划线或美元符(数字是不允许作为首字符出现的,以便 JavaScript 可以轻易区分开标识符和数字)。
备注是 JavaScript 中最重要的保留字(按字母顺序):
注释
不是所有的 JavaScript 语句都是"命令"。
可以用注释来阻止代码的执行
单行注释以 // 开头。
ctrl+/
多行注释以 /* 开始,以 */ 结尾。
ctrl+shift+/
数据类型
JavaScript 有多种数据类型:数字,字符串,数组,对象等等:
大小写敏感
转义符
\+一个字符,组成转译字符.一般用于表示特殊符号
常用的转译符:\n(换行) \b(退格) \\(一个\) \t(缩进) \”
变量
变量是用于存储信息的容器:
声明(创建) JavaScript 变量
通过 var 语句来声明 JavaScript 变量
向 JavaScript 变量赋值
向未声明的 JavaScript 变量赋值
所赋值的变量还未进行过声明,该变量会自动声明。
重新声明 JavaScript 变量
再次声明了 JavaScript 变量,该变量也不会丢失其原始值。
重新赋值
对于number类型的值,会将内存中原来的值覆盖.
对于string类型的值,不会覆盖.
任何语言中的字符串都具有不可变性,就是一旦声明了,这块空间的值是不变的,如果重新给变量赋值的话,会重新开辟新的空间,因此频繁的给字符串赋值的话,会浪费内存空间。
命名规则:
变量名必须以字母或下划线“_”或$开头
变量可以包含数字(从A至Z的大小字母),下划线或是$
JavaScript严格区分大小写,computer和Computer是两个完全不同的变量
0 条评论
下一页
为你推荐
查看更多