JavaScript基础

JavaScript简介
JavaScript是一种解释型脚本语言,目的是能够在客户端的网页中增加动态效果和交互能力,实现了用户与网页之间的一种实时的、动态的交互关系。
它最初是由网景公司设计的,起名为LiveScript,后来Java语言非常红火,网景公司希望借助Java的名气来推广,改名为JavaScript,但是除了语法有点相似,在其他部分基本上没啥关系。
后来,JavaScript被Netscape公司交给ECMA制定标准,成为ECMAScript,最新版ECMAScript6(简称ES6)已经在2015年6月正式发布了。

JS组成
JS组成:ECMAScript(JS的核心)、DOM(文档对象模型)、BOM(浏览器对象模型)

  • ECMAScript:主要定义了JS的语法
  • DOM:一套操作页面元素的API,DOM可以把HTML看做是文档树,通过DOM提供的API可以对树上的节点进行操作
  • BOM:一套操作浏览器功能的API,通过BOM可以操作浏览器窗口
    JS用途
    主要用于网页特效、服务端开发、命令行工具、桌面程序、APP、控制硬件—物联网、游戏开发

JavaScript书写位置
写在行内

1
写在script标签中

1
2
3
由包含的代码就是JavaScript代码,他将直接被浏览器执行。

写入外部js文件中,在页面引入

1
把代码放在单独的文件中更有利于维护代码,并且多个页面可以各自引用同一个.js文件。

基本语法
JavaScript语法和Java相似,每个语句以;结束,语句块用{···}。
注意:JavaScript严格区分大小写。

变量
变量的概念: 一个变量就是分配了一个值的参数。使用变量可以方便的获取或者修改内存中的数据
变量的声明: 在声明变量时使用关键字var,要注意关键字与变量名之间的空格,也可以在一行中声明多个变量,以逗号分隔变量。

var age;
1
var age, name, sex;
age = 10;
name = ‘zs’;
1
2
3
注意: 变量名必须是一个JavaScript标识符,应遵循以下标准命名规则:

第一个字符必须是字母、下划线(_)或者美元符($)
后面可以跟字母、下划线、美元符、数字,但不能是其他符号
在被申明的范围内,变量的名称必须是唯一的
不能使用保留关键字作为标识符
变量的赋值: 在JavaScript中,使用=对变量进行赋值。可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同的数据类型的变量,但是只能用var申明一次。要显示变量,可以用console.log(x),打开Chrome的控制台就可以看到结果。

var age;
age = 18;
1
2
var age=18;
1
注释
以//开头直到行末的字符被视为注释,注释是给开发人员看的,JavaScript引擎会自动忽略。
另一种块注释是用/···/把多行字符包裹起来,视为注释。
例如:

块注释结束*/

···

1
2
3
4
5
6
7
8
9
10
11
12
13
14
数据类型
JSd的数据类型分为两大类:

简单数据类型(基本数据类型):boolean、number、string、null、undefined(、symbol)
复杂数据类型:object
number
JavaScript不区分整数和浮点数,统一用number表示,以下都是合法的number类型:

123;//整数123
0.456;//浮点数0.456
1.2345e3;//等同于1234.5
-99;//负数
NaN;//当无法计算结果是使用NaN表示
Infinity;//表示无限大
1
2
3
4
5
6
number存在精度问题:

0.2 + 0.1 = 0.30000000000000004
0.1 + 0.2 !== 0.3 //true
1
2
所以最好不要判断浮点数是否相等。

数值判断
NaN:Not a Number 不是一个number
NaN==NaN ==>false
isNaN():判断是否是number类型

isNaN(NaN) ===> true
isNaN(10) ===> false
isNaN(“10”) ===> false //将字符串隐性的转换为number类型
isNaN(false) ===> false //将boolean转为number类型
1
2
3
4
数值转换
数值转换有多种方法:

Number():
转换规则:
boolean => 1 或 0
number => 直接返回
undefined => NaN
null => 0
string => 字符串只包含数字–>十进制数值
字符串包含有效浮点格式–>对应浮点数值
字符串包含十六进制–>十进制
其他格式–>NaN
object =>调用valueOf(),然后依照前面规则转换。如果结果为NaN,调用对象的toString(),然后依照前面的规则转换
console.log(Number(true)); //1
console.log(Number(1)); //1
console.log(Number(undefined)); //NaN
console.log(Number(null)); //0
console.log(Number(“123”)); //123
console.log(Number(’-1’)); //-1
console.log(Number(“1.1”)); //1.1
console.log(Number(“011”)); //11
console.log(Number(".1")); //0.1
console.log(Number(“0xf”)); //15
console.log(Number(“123a”)); //NaN
console.log(Number(“a123”)); //NaN
console.log(Number(“a.1”)); //NaN
console.log(Number(“0xabc”)); //2748
console.log(Number(“0xabg”)); //NaN
console.log(Number("")); //0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
parseInt()
当第一个字符不是数字字符或负号,结果为NaN
当是0x开头所组成的字符串,符合要求可看作十六进制数,然后进行转换,结果为十进制
当要转换的是boolean类型时,结果为 NaN
parseInt(“1234blue”); //1234
parseInt(""); //NaN
parseInt(“0xA”); //10
parseInt(“070”); //70
parseInt(true); //NaN
parseInt(“22.5”); //22
parseInt(22.5); //22
parseInt(“a123”); //NaN
1
2
3
4
5
6
7
8
在ECMAScript 3中,parseInt(“070”);的结果为56,因为他将以0开头的看作八进制进行转换,而ES5已经不具备解析八进制的能力,所以我们可以通过给parseInt()传递参数来解决这个问题(通过参数来说明要转换的数据是几进制)

parseInt(“070”,8); //56
parseInt(“AF”,16); //175
1
2
parseFloat()
十六进制的字符串始终会转为0
无法转换boolean类型的数据,结果都为NaN
字符串包含的是一个可解析的整数,parseFloat()会返回整数
没有第二个参数
parseFloat(“0xA”); //0
parseFloat(“22.34.5”); //22.34
parseFloat(“3.125e7”); //31250000
parseFloat(“123a”); //123
parseFloat(true); //NaN
1
2
3
4
5
取正或取负
当我们对数据进行取正或取负时,会隐性的进行数值转换
+“123” //123
-“123” //123

  • true //1
    +“123abc” //NaN
    1
    2
    3
    4
    -0
    进行-0操作时,也会隐性的进行数值转换
    ‘123’-0 //123
    true-0 //1
    ‘123abc’-0 //NaN
    1
    2
    3
    string
    用于表示由零个或多个16位Unicode字符组成的字符序列,即字符串。字符串是以单引号’或双引号"括起来的任意文本,比如’abc’、"xyz"等等。单引号和双引号只是一种表示方式,不是字符串的一部分,所以,字符串’abc’中只有a、b、c这3个字符。
    特点: 不可变的
    当重新为一个字符串赋值时,实际上是重新开辟内存空间,例如:

var lang=“Java”;
lang=lang+“Script”;
1
2
以上代码是先创建一个空间存放字符串“Java”,接着在运行到下一行代码时,在内存中重新开辟一个空间,存放的是"JavaScript",变量lang指向新开辟的空间。这些操作都是后台发生的,影响网站性能,所以一般代码中不要写大量的字符串拼接。

转为字符串
转为字符串的方法有:

toString():
数值、布尔值、对象、字符串值都有这个方法,null、undefined没有这个方法
字符串使用这个方法返回字符串的副本
可传参 控制输出进制
var num=10;
num.toString(); //“10”
num.toString(2); //“1010”
num.toString(8); //“12”
num.toString(10); //“10”
num.toString(16); //“a”
1
2
3
4
5
6
String():
在不知道转换值是不是null、undefined时,可以使用String()转换
转换规则:
如果值有toString()方法,调用toString()(没有参数)并返回
如果是null,返回"null"
如果是undefined,返回"undefined"
String(10); //“10”
String(true); //‘true’
String(null); //‘null’
1
2
3
值+""
18+"" //“18”
true+"" //‘true’
1
2
boolean
布尔值和布尔代数的表示完全一样,一个布尔值只有true和false两种值,区分大小写。可以直接用true和false表示布尔值,也可以通过布尔运算算出来:

true;//这是一个true值
false;//这是一个false值
2>1;//这是一个true值
2>=3;//这是一个false值
1
2
3
4
转为boolean值
Boolean()将一个值转换为其对应的boolean值
转为false的值:

null
undefined
“”
NaN
0
布尔值经常用在条件判断句中。

null和undefined
null表示一个“空”的值,他和0以及空字符串’‘不同,0是一个数值,’'表示长度为0的字符串,而nul表示空。
undefined表示“未定义”。

object
一组数据和功能的集合。可以通过执行new操作符后跟要创建的对象类型的名称来创建,而创建Object类型的实例并为其添加属性或方法。

var student={
name:‘LullabyLY’,
age:20,
num:xxxxxxxx
};
//也可以是
var student=new Object();
student.name=‘LullabyLY’;

1
2
3
4
5
6
7
8
9
要获取一个对象的属性,我们用对象变量.属性名的方法:

student.name;//‘LullabyLY’
student.num;//xxxxxxxx
1
2
object的每个实例都有下列属性或方法:

constructor:保存着用于创建当前对象的函数
hasOwnProperty(propertyName):用于检查给定的属性是否在当前对象实例中(不是在实例的原型中),参数为字符串格式
isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型
propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举,参数是字符串形式
toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应
toString():返回对象的字符串表示
valueOf():返回对象的字符串,数值或布尔值表示,通过与toString()返回值相同
typeof
获取变量类型,返回的值是string类型
结果有:

“undefined”
“boolean”
“string”
“number”
“object”
“function”
typeof 10 //“number”
typeof “10” //“string”

function fn(){

}
typeof fn //“function”
//age未声明
typeof age //“undefined”

typeof null //“object”
typeof undefined //“undefined”
1
2
3
4
5
6
7
8
9
10
11
12
typeof将null的类型定为object是因为 null被认为是空的对象引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值