JavaScript语言

前言

JavaScript是是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。


JavaScript语言



走向JavaScript第一步Helloworld

<script type = "text/javascript">
/**
*弹出一个对话框 helloworld*/
alert("Hello world");
/**
*让计算机在页面输出一个内容*/
document.write("天行健,君子以自强不息")
/**
*向控制台输出内容*/
console.log("五花马,千金裘,呼儿将出换美酒")
</script>

alert是指打开浏览器弹出的对话框显示的内容

在这里document是指文档的意思即在body标签中操作

console在JavaScript里是控制台的意思

JavaScript代码的编写位置

第一种就是以上形式就不用声明

第二种是将js代码写到标签的onclick属性中

<b onclick="alert('举头望明月,低头思故乡')">静夜思b>

第三种是将js代码写在超链接的href属性中

<a href="javascript:alert('举头望明月,低头思故乡');">静夜思a>

第四种是写到外部文件后缀名为.js文件

<script type="text/javascript" src="../js/HelloWorld.js"> script>

注意一个小细节如果Script一旦用于引入外部文件,就不能在编写代码,即使编写,浏览器也会选择忽略

如果需要可以再创建一个新的script标签

基本语法

//单行注释
/**多行注释
**/
这里就不多介绍编程语言差不多都是共通的

1.Js中严格区分大小写

2.Js中每一条语句以(;)结尾

3.Js中huihulve多个空格和换行,可以利用空格和回车对代码进行格式化

字面量和变量

字面量:是指不可改变的值,也就是常量。它可以直接被使用例如:1,2,3,4

变量:变量可以用来保存字面量,而且变量的值是可以任意改变的

在js中使用var关键字来声明一个变量

var numbers = 123;
var number = 1;

标识符

在js中自主命名的都可以是标识符,变量名、函数名、属性名都属于标识符

命名一个标识符需要遵守的规则

1.标识符可以含有字母、数字、_、$

2.标识符不能以数字开头

3.标识符不能是ES中的关键字或保留字

4.标识符一般都采取驼峰命名法:首字母小写,每个单词的开头字母大写,其余字母小写

实际上JS底层保存标识符时实际上是采用的Unicode编码,

所以理论上讲,所有的Utf-8中含有的内容都可以作为标识符

数据类型

数据类型指的就是字面量的类型,在js中一共有六种数据类型

String 字符串 Number 数值 Boolean 布尔值

Null 空值 Undefined 未定义 Object 对象

其中String Number 、Boolean、 Null、 Undefined属于基本类型

而Object属于引用数据类型

字符串

在JS中字符串需要使用引号引起来,使用双引号或单引号都可以,但是不要混着用

引号不能嵌套,双引号不能放双引号,单引号不能放单引号

在字符中我们可以使用\作为转义符,当表示一些特殊符号时可以使用\进行转义

\"表示"
\'表示'
\n 表示换行
\t 制表符
\\表示\

Number类型

在JS中所有的数值都是Number类型,包括整数和浮点数

在这里可以使用运算符typeof来检查一个变量的类型

语法:typeof变量

var a = 123;
console.log(typeof a);//控制台输出变量类型

JS中可以表示的数字的最大值

如果使用Number表示的数字超过了最大值,则会返回一个Infinity(正无穷) -Infinity(负无穷)

使用typeof检查Infinity也会返回Number,

NaN是一个特殊的数字,表示Not A Number

使用typeof检查一个NaN也会返回一个number

布尔值(Boolean)

布尔值有两个用于做逻辑判断true(真)和false(假)

Null和Undefined

Null(空值)类型只有一个值,就是null,专门用来表示空的对象

使用typeof检查一个null空值时,会返回object

Undefined(未定义)类型的值只有一个,就undefined

只有当声明一个变量,但是并不给变量赋值时,他的值就是undefined

使用typeof检查一个undefined时也会返回undefined

强制类型转换

是指将一个数据类型强制转化为其他的数据类型

类型转换主要指,将其他的数据类型转换为String、Number、Boolean

String转换

方法一:调用被转换数据类型的toString()方法

该方法不会影响到原变量,它会将转换的结果返回

需要注意:null和undefined这两个值没有toString()方法

如果调用他们的方法,会报错

方法二:调用String函数,并将转换的数据作为参数传递给函数

使用String()函数做强制转换时,对于null和undefined,不会调用toString()方法

它会将null转换为“null”,undefined也是一样

var a = 123;
a.toString();
console.log(a);
String(a);

Number转换

将其他的数据类型转换为Number

转换方式一:

使用Number()函数

字符串转换为数字

1.如果是纯数字的字符串,则直接转换为数字

2.如果字符串中有非数字的内容,则转换为NaN

3.如果字符串是个空串或者是一个全是空格的字符串

布尔值转换数字

true转换成1 false转换成0

Null转换成数字 0

undefined转换成数字 NaN会报错

转换方式二

是专门针对字符串转换为数字

parseInt()将一个字符串转换成整数

parseFloat()将一个字符串转换为一个浮点数

如果非String使用parseInt()或parseFloat(),他会先将转换为String,然后在操作

这种方法是提取数字,由此可以在被转换成数字之前可以随意添加多种不同类

型,最终的结果还是提取出数字。

var a ="123";
a = Number(a);
a = parseInt(a);//转换成整数
a = parseFloat(a);//转换成浮点数
console.log(a);

Boolean类型转换

将其他数据类型转换为布尔类型

使用Boolean()函数转换

数字转成布尔值除了0和NaN,其余的都是true;

字符串转换成布尔值除了空串,其余都是true;

null和undefined都会转换为false

对象也会转换为true

var a = 123;//true
a = -123;//true
a = 0;//false
a = Infinity;//true
a = Boolean(a);
console.log(a);

其他进制的数字

在JS中需要表示16进制的数字,则需要以0x开头

表示八进制的数字,是以0开头;表示二进制的数字,是以0b开头

但也不是所有的浏览器都支持

a = 0x10;
a = 0xff;
a = 0xCafe;
a = 070;
a = 0b10;
console.log(a);

运算符

算数运算符

+、-、*、/、%

当对非Number类型的值进行运算时,会将这些值转换为Number然后再运算

任何值和NaN做运算都得NaN

+可以对两个值进行加法运算,并将结果返回

如果两个字符串相加是拼接,并返回

任何值和字符串做加法运算,都会先转换为字符串,然后再和字符串做拼串的操作

一元运算符

一元运算符其实就是指 +(正号)和-(负号)

自增和自减

在JS里符号是++和–

通过自增可以在自身基础+1

对于一个变量自增以后,原变量的值会立即自增1

自增分成两种++a和a++,前++是先自增后输出数,后加加是先输出数后自增

同理–也是一样。

逻辑运算符

!非

所谓非运算就是值对一个布尔值进行取反操作 true变false false变true

如果对一个值进行两次取反,不会产生变化

  && 与    

可以对符号两侧的值进行与运算并返回的结果

两个值中只要有一个值为false就返回false,只有两个值都为true时,才会返回一个true

在JS中是短路与,如果第一个值为false,则不会看第二个值

||或 可以对符号两侧的值进行与运算并返回的结果

两个值只要有一个true,就返回true;如果两个值都为false,才会返回false

在JS中“或”属于短路或,如果第一个值为true,则不会检查第二个值

&& ||非布尔值的情况

对于非布尔值进行与或运算时,会将转换为布尔值,然后运算

与运算:如果第一个值为true,则返回第二个值,如果第一个值为false,则返回第一个值

或运算:如果第一个值为true,则返回第一个值,如果第一个值为false,则返回第二个值

赋值运算符

= 可以将符号右侧的值赋值给符号左侧的变量
+=: a+=1 等价于a=a+1
-=:a-=1 等价于 a = a-1
*=:a*=1 等价于 a=a*1
/=:a/=1等价于 a=a/1
%=:a%=1 等价于 a=a%1

关系运算符

> ,<,>=, <=,==

三元运算符

语法:条件表达式?语句1:语句2;

var a = 30;
var b = 20;
var c = 50;
var max = a > b ? a : b;
console.log(max);

执行流程:条件运算符在执行时,首先对条件表达式进行求值

如果为true,则执行语句1,并返回执行结果

如果该值为false,则执行语句2,并返回执行结果

运算符的优先级

JavaScript基础知识_字符串

条件语句

if语句、switch语句、while循环、for循环、嵌套循环、break和continue

if语句

语法格式一

if(条件表达式){
语句;
}

var a = 10;
if(a>10){
alert("a比9大")
}

语法格式二

if(条件表达式){
语句...
}else if(条件表达式){
语句...
}else{
语句...
}

var age = 90;
if(age>1 && age<12){
alert("你还是个儿童");
}else if(age>12 && age<18){
alert("你是个少年");
}else if(age>18 && age<35){
alert("你成年了");
}else{
alert("恭喜你到了更年期");
}

switch语句

语法结构

var a = 1;
switch(a){
case 1
console.log("一");
break;
case 2
console.log("二")
break;
default:
console.log("非法数字");
break;
}

while循环

语法结构

while(条件表达式){
语句...
}

var i = 1;
while(i<=5000){
document.write(i++ + "
"
);
}

do{
document.write(i++ + "
"
);
}while(i<=10);

for循环

for(初始化表达式;条件表达式;更新表达式){
语句...
}
//打印一到一百的所有奇数和
for(var i = 1;i<=100;i++){
if(i%2 != 0){
sum += i;
}
}
console.log(i);

嵌套循环

九九乘法表

for(var i = 1; i<=9;i++){
for(var j = 1; j<=i;j++){
console.log(j+"*"+i+"="+(i*j));
}
console.log("
"
);
}

break和continue

break关键字可以用来退出Switch或循环语句,不可以在if语句中使用break和continue

break会立刻终止离他最近那个循环语句

t.write(i++ + “
”);
}while(i<=10);


#### for循环

```javascript
for(初始化表达式;条件表达式;更新表达式){
语句...
}
//打印一到一百的所有奇数和
for(var i = 1;i<=100;i++){
if(i%2 != 0){
sum += i;
}
}
console.log(i);

嵌套循环

九九乘法表

for(var i = 1; i<=9;i++){
for(var j = 1; j<=i;j++){
console.log(j+"*"+i+"="+(i*j));
}
console.log("
"
);
}

break和continue

break关键字可以用来退出Switch或循环语句,不可以在if语句中使用break和continue

break会立刻终止离他最近那个循环语句

continue是跳出本次循环