Javascript基础一
Posted zhaoweinotes
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript基础一相关的知识,希望对你有一定的参考价值。
javascript的发展历史:
JavaScript在设计之初只是为了做表单验证。但是现如今,JavaScript已经成为了一门功能全面的编程语言,已经是WEB中不可缺少的一部分,如今的JavaScript是一门既简单又复杂的语言,说它简单是因为可能一小时就能学会,但是如果你要真正掌握它,可能就得需要个几年的时间了。
JavaScript的组成:
ECMAScript是一个标准,它规定了语法、类型、语句、关键字、保留子、操作符、对象。(相当于法律)
BOM(浏览器对象模型):可以访问浏览器窗口的浏览器对象模型,对浏览器窗口进行操作。
DOM(文档对象类型):DOM把整个页面映射成一个多层节点结构。html页面组成都是某种类型的节点,这些节点又包含着不同类型的数据。
JavaScript和Html5的关系:
如何编写及运行JS:
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部。
外联JS的写法为:
<script src="相对路径"></script>
<script> //在script标签内写js脚本 </script> 错误的写法: <script src="相对路径"> //在script标签内写js脚本 </script>
向页面中打印内容:
变量:
JavaScript 变量是存储数据值的容器。
var x = 7; var y = 8; var z = x + y; //x、y 和 z 是变量:
从上例中,你可以获得:
- x 存储值 7
- y 存储值 8
- z 存储值 15
注意:JS中的“=”号,和数学中的“=”不一样,在JS中“=”的作用是赋值(取名字)。
变量的类型(数据类型)
变量命名规则和关键字的介绍:
- 名字中只能包含 字母、数字、下划线、$、(中文)
- 不能以数字开头
- 不能是保留字或关键字
- 具有相关含义
- 驼峰命名
- 大驼峰:如ZhongHuaRenMinGongHeGuo
- 小驼峰:如zhongHuaRenMinGongHeGuo
- 匈牙利命名法:
- Int iNum:以i开头的变量存储整数
- Float fNum:以f开头的变量存储小数
- Boolean bBoo:以b或bo开头的变量存储布尔变量
- String sStr:以s开头的变量存储一个字符串
- Char cCh:以c开头的变量存储一个字符
- Object obj:以o开头的变量存储对象
- Array arr:以arr开头的变量存储数组
- Function fn:以fn开头的变量存储函数
break
|
do
|
instanceof
|
typeof
|
case
|
else
|
new
|
var
|
catch
|
finally
|
return
|
void
|
continue
|
for
|
switch
|
while
|
debugger*
|
function
|
this
|
with
|
default
|
if
|
throw
|
delete
|
in
|
try
|
|
|
abstract
|
enum
|
int
|
short
|
boolean
|
export
|
interface
|
static
|
byte
|
extends
|
long
|
super
|
char
|
final
|
native
|
synchronized
|
class
|
float
|
package
|
throws
|
const
|
goto
|
private
|
transient
|
debugger
|
implements
|
protected
|
volatile
|
double
|
import
|
public
|
|
算术、赋值、关系运算符:
算术运算符: +加法 -减法 *乘法 /除法 %取余
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 系数 |
++ | 递加 |
-- | 递减 |
【注】+号,有两层意思,第一层算数之间的加法;第二层字符串的连接;执行过程中,先检测加号两边的数据类型,如果发现字符型,那就先 生效字符的连接
赋值运算符:= += -= *= /= %=
运算符
|
例子
|
等价于
|
运算结果
|
= | y = 6 | y = 6 | y = 6 |
+= | y += 1 | y = y+1 | y = 7 |
-= | y -= 1 | y = y-1 | y = 5 |
*= | y *= 2 | y = y*2 | y = 12 |
/= | y /= 2 | y = y/2 | y = 3 |
%= | y %= 4 | y = y%4 | y = 2 |
关系运算符: < <= > >= == != ===
运算符 | 说明 | 例子 | 运算结果 |
== | 等于 | 2 == 3 | false |
=== | 恒等于(值和类型都要做比较) |
2 === 2
2 === "2"
|
true
false
|
!= | 不等于,也可写作<> | 2 == 3 | true |
> | 大于 | 2 > 3 | false |
< | 小于 | 2 < 3 | true |
>= | 大于等于 | 2 >= 3 | false |
<= | 小于等于 | 2 <= 3 | true |
【提示】语句结束要加分号,虽然不加分号在JS语法上没有什么问题,但是建议不要省略分号,加了分号之后可以使用软件压缩。
变量不同类型之间的自动、手动类型转换:
显式转换的数据类型
1、将非数值转换为数值类型的函数有3个函数可以把非数值转换为数值:Number()、parseInt()、parseFloat()。
第一个函数Number(mix),可以用于任何数据类型,该函数先将mix的数据类型转换为number类型,然后再将mix的值转换为数值。
若mix的值能直接转换成数字,则直接显示。若不能则显示0或NaN.
而另两个函数则专门用于把字符串转换成数值。
parseInt(string)函数:将字符串转换为数值,不遵循四舍五入。这里的string必须是数字类型的开头字符串,一直遍历到非数值的那个字符才停止。若不是数字开头,则会显示NaN.
<script> var num = ["123" , "124.4" , "234asd" , "asf456"] ; for (i = 0; i < num.length; i++) { console.log(parseInt(num[i])); } </script>
执行结果为:123 , 124 , 234 , NaN .
parseFloat(string):将string转换为浮点数。从数字位开始看,直到非数字位结束,用法与parseInt(string)一致。
parseInt()函数还有另一种用法。parseInt(string,radix):
以radix为基底,将string转换成十进制的整数。radix的取值为2-32。
2、将其它类型的数据转换为字符串类型的函数
有两个函数可以把其他数据类型转换为字符串。toString() 和 string() 。
String(mix):将mix转换成字符串类型。该函数可以将任何数据类型的值转换为字符串。
toString()函数有两种用法。,
- 用法一:demo.toString():将demo转换成字符串类型。demo不能等于null undefined
- 用法二:demo.toString(radix):将十进制的数demo转换为目标进制的数。如123.0.toString(8)为将十进制数字123转换为8进制的字符串。
注:不能写成123.toString(8) . 因为浏览器解析的时候会解析成小数。
//例题:把一个二进制的数10001000转换成十六进制的数。
//思路:先把二进制转换成十进制,再由十进制转换成十六进制。
var num1 = parseInt(‘10001000‘,2); //136 var num2 = num1.toString(16); //‘88‘
3、将值转换成布尔值类型
Boolean(变量):将一个值转换成其对应的布尔值。
(1)原始类型值的转换方法
以下六个值的转化结果为false,其他的值全部为true。
- undefined
- null
- -0
- +0
- NaN
- ‘‘(空字符串)
(2)对象的转换规则
所有对象的布尔值都是true,甚至连false对应的布尔对象也是true。
Boolean(new Boolean(false)) // true
隐式的数据类型转换
隐式类型的转换是系统进行运算时自动进行的,但是调用的方法都是显式类型转换的方法。
1、递增和递减操作符
a++ ,a-- ,++a , --a
这4个操作符对任何值都适用,也就是他们不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象,此时伴随着隐式的数据类型转换。
即先将变量通过Number()转换成number的数据类型,然后再进行递增、递减操作。
2、(+)(-),即正负号
不仅适用于整数,还可以用于字符串、布尔值、浮点数值和对象。将变量通过Number()转换成number的数据类型。
3、isNaN(变量)
执行过程为:即先将变量通过Number转换,再进行isNaN() 。
isNaN()函数,该函数判断括号内的值是否是NaN,是就返回true,不是就返回false
【NaN】:是一种特殊的Number类型,代表意外转换的数字,NaN和任何东西都不相等。厉害到自己都不等于自己
alert(NaN == NaN); //返回false
4、(+) 加号
先看下面的一段代码
<script> var str = 1 + "1"; var num = 1 + 1; var num1 = 1 + false; document.write(str , "<br>" , num , "<br>" , num1); </script>
执行结果为:11 , 2 ,1
所以加法有两个作用。如果没有运算过程中没有字符串时,就将变量通过Number()转换为number类型后,再进行运算。如果有字符串的话,加号两边起的就是字符串连接作用。
5、- * / % 减号,乘号,除号,取余
运算时把数据转换成number类型后,再进行运算。
6、&& || ! 与或非运算
运算符 | 说明 | 例子 | 运算结果 |
&& | 逻辑与(and) |
x = 2;
y = 6;
x>5 && y>5
|
FALSE |
|| | 逻辑或(or) |
x = 2;
y = 6;
x>5 || y>5
|
TRUE |
! | 逻辑非,取逻辑的反面 |
x = 2;
y = 6;
!(x > y)
|
TRUE |
将运算符两边的值转换成通过Boolean()函数转换成布尔类型,然后再进行运算。不同的是,&& || 返回的是比较后自身的原值,而 !运算返回的是布尔值.
看一个例子。
<script> console.log(5 && 3); //从左往右判断,如果全都为真,则返回最后一个为真的值,只要有一个判断为假,就返回为假的那个值 console.log(0 || 2); //从左往右判断,返回第一个为真的值,若完成了全部的判断且所有的值都为假,就返回最后为假的那个值 console.log(!3); </script>
返回的结果为:3 , 2 , false.
7、 < > <= >= == != 比较运算符
当数字和字符串比较大小时,会隐示将字符串转换成number类型进行比较。而当字符串和字符串比较大小时,则比较的是ascii码的大小。最后返回的则是布尔值
<script> //1)纯数字之间比较 alert(1<3);//true //2)数字字符串比较,会将其先转成数字 alert("1"<"3");//true alert("123"<"123");//false //3)纯字符串比较,先转成ascii码 alert("a"<"b");//true alert("abc"<"aad");//false,多纯字母比较,会依次比较ascii码 //4)汉字比较 alert("我".charCodeAt());//25105 alert("的".charCodeAt());//30340 alert("我"<"的");//true,汉字比较,转成ascii码 //5)当数字和字符串比较,且字符串为数字。则将数字字符串转为数字 alert(123<"124");//true,下面一句代码得出124的ascii码为49,所以并不是转成 ascii比较 alert("124".charCodeAt());//49 //6)当数字和字符串比较,且字符串为非纯数字时,则将非数字字符串转成数字的时候会转换为NaN,当NaN和数字比较时不论大小都返回false. alert(13>"abc");//false </script>
下面看一种特殊情况。
<script> //undefined不发生类型转换 console.log(undefined == undefined); //true console.log(undefined == 0); //false console.log(undefined > 0); //false console.log(undefined < 0); //false //null不发生类型转换 console.log(null == null); //true console.log(null == 0); //false console.log(null > 0); //false console.log(null < 0); //false console.log(undefined == null); //true console.log(NaN == NaN); //false. not a number 不等于任何东西,包括它自己 </script>
在项目工程中,如果用 == 来判断两个数值是否相等,由于会发生隐式类型转换。所以是非常存在非常大的漏洞的。为了解决这一问题。引入了 === (绝对等于)和 !==(绝对不等于)。
<script> console.log(1 === "1"); //false console.log(1 === 1); //true </script>
以上是关于Javascript基础一的主要内容,如果未能解决你的问题,请参考以下文章