变量,数据类型,运算符,运算符优先级,类型转换

JavaScript介绍

javascript的组成

  • ECMAScript - JavaScript的核心,描述了语言的基本语法和数据类型,ECMAScript是一套标准,定义了一种语言的标准与具体实现无关
  • DOM:一套操作网页元素的API
  • BOM:一套操作浏览器功能的API

JavaScript书写位置

JavaScript的代码书写分为两种:

  • 写在script标签中
1
2
3
<script>
alert('Hello World!');
</script>
  • 引入一个js文件
1
<script src="main.js"></script>

注意:如果script标签指定了src属性,表示引入一个外部的文件,内部写入的js代码会被忽略

注释

注释代码不会被执行,仅仅起到一个提示的作用。注释可以对复杂的代码进行解释,方便后期的维护和开发。

  • 单行注释
1
2
// 这是单行注释, 单行注释只能写一行代码
// 快捷键: ctrl + /
  • 多行注释
1
2
3
4
5
/*
这是多行注释,在多行注释中可以
换行
快捷键 alt + shift + a
/*

输出语句

  • 警告框alert
1
2
//alert会弹出一个警告框
alert("hello world");
  • 确认框confirm
1
2
//confirm弹出一个确定框
confirm("你爱我吗?");
  • 输入框prompt
1
2
//prompt:弹出一个输入框,可以输入值
prompt("请输入你的银行卡密码");
  • 在网页中输入内容
1
2
3
//可以识别标签
document.write("hello world");
document.write("<h1>hello world</h1>");
  • 在控制台输入
1
2
//F12打开控制台,在console中可以看到打印的信息
console.log("hello word");

总结:alert、comfirm、prompt三个用户体验太差,一般不用。console.log经常用来打印日志,调试的时候非常有用。

变量

使用变量

  • var声明变量
1
var age;
  • 变量的赋值
1
2
var age;
age = 18;
  • 同时声明并且赋值
1
var age = 18;
  • 同时声明多个变量并赋值
1
var age = 10, name = 'zs';
  • 不声明变量,直接赋值(不会报错,但是不推荐)
1
2
age = 18;
console.log(age);
  • 不声明变量,也不赋值变量,直接使用(会报错)
1
console.log(age);

结论:

  • 变量应该声明之后再使用。
  • javascript代码一旦报错了,后面的代码就不再执行了。

变量的命名规则和规范

  • 规则 - 必须遵守的,不遵守会报错

    • 由字母、数字、下划线、$符号组成,不能以数字开头
    • 不能是关键字和保留字,(不用死记,慢慢就见得多了)
    • 区分大小写
  • 规范 - 建议遵守的,不遵守不会报错

    • 变量名必须有意义
    • 遵守驼峰命名法。首字母小写,后面单词的首字母需要大写。例如:myName、userPassword

关键字:

保留字:

数据类型

javascript中数据类型分为简单数据类型和复杂数据类型,这里是简单数据类型

number、string、boolean、undefined、null

number-数字类型

数字: 11 255 333 1024

整数 - 进制

在javascript中表示一个数字,除了有我们常用的十进制11, 22,33等,还可以使用八进制、十六进制表示等。

十进制

1
2
3
4
//我们最常用的进制,进行算术运算的时候,八进制和十六进制最终都要转换成十进制
//逢10进1
var num = 9;
var num = 29;

八进制

1
2
3
// 0开头的数字, 逢8进1
var num1 = 07;
var num2 = 012;

十六进制

1
2
3
// 0x开头的数字,逢16进1,  数字范围1-9A-F
var num = 0xA;
var num = 0x12;

tips:计算机只认识二进制,所以所有的代码最终都会转换成二进制数据。

浮点数

浮点数就是小数,,比如0.1

  • 浮点数
1
var num = 0.1;
  • 科学计数法
1
2
3
//当一次数字很大的时候,可以用科学计数法来表示
var num = 5e5; //5乘以10的5次方
var num = 3e-3;//3乘以10的-3次方
  • 浮点数精度丢失问题
1
2
3
4
//在进行浮点数运算的时候,可能会出现精度丢失的问题
0.1 + 0.2 = 0.30000000000000004;
0.2 + 0.2 = 0.4;
//尽量少用浮点数进行运算,不要让浮点数进行比较。

数值范围

1
2
3
4
最小的小数值:Number.MIN_VALUE,这个值为: 5e-324
最大值:Number.MAX_VALUE,这个值为: 1.7976931348623157e+308
无穷大:Infinity
无穷小:-Infinity

字符串类型

字符串类型,使用双引号 " 或者 ' 包裹起来的字符

1
2
3
//双引号和单引号必须成对出现
var str = 'hello world';
var str = "hello world";

字符串长度

每一个字符串都有一个length属性,可以获取到字符串中字符串的个数

1
2
var str = "zdgfjgk";
console.log(str.length);

转义字符

字符串拼接

  • +号具有字符串拼接功能,它能将两个字符串拼接成一个字符串。
  • +号同时具有算术加法的功能,它能将两个数字进行相加
  • 如果+号两边有一个是字符串,那么就是拼串的功能,如果都是数字,那么就是算数的功能。
1
2
3
4
5
6
7
8
9
10
11
var a = "hello";
var b = "itcast";
console.log(a + b);//字符串拼接功能

var a = "100";
var b = 100;
console.log(a + b);//字符串拼接功能

var a = 100;
var b = 100;
console.log(a + b);//加法功能

布尔类型

布尔类型:true 和 false

1
2
3
//布尔类型只有两个值
true:表示真
false:表示假

注意:区分大小写,不要写成True或者是False

undefined和null

  • undefined表示一个没有赋值的变量
  • null表示一个空的对象

字面量与变量

  • 字面量,也叫直接量,值是固定不变的,浏览器能够直接识别的量,比如11, "abc", true, false, undefined, null等都是字面量,可以直接使用。
  • 变量:浏览器必须要经过声明之后,才认识变量,如果没有声明,直接使用变量是会报错的。

操作符

算术运算符

赋值运算符

赋值运算符有: = , +=, -=, *=, /=, %=

1
2
3
4
5
6
var num = 10;
num += 1; //num = num + 1;
num -= 1; //num = num - 1;
num *= 2; //num = num * 2;
num /= 2; //num = num / 2;
num % = 2; //num = num % 2;

一元运算符

一元运算符:只有一个操作数的运算符

二元运算符:有两个操作数的运算符,比如算术运算符、赋值运算符

自增运算符:++

  • 先自增: ++i
  • 后自增:i++
1
2
3
4
5
6
7
//先自增:
var num = 1;
console.log(++num); //先自增:表示先加1,后返回值

//后自增:
var num = 1;
console.log(num++);// 后自增:表示先返回值,后+1

自减运算符:–

  • 先自减:--i
  • 后自减:i--

逻辑运算符

  • &&:与运算符,表示且,只有当两个操作数都为true的时候,结果才是true
  • ||:或运算符,表示或,只要有其中一个操作数是true,结果就是true
  • !:非运算符,取反
1
2
3
4
5
6
7
8
9
10
11
12
console.log( true && true );
console.log( false && true );
console.log( true && false );
console.log( false && false );

console.log( true || true );
console.log( false || true );
console.log( true || false );
console.log( false || false );

console.log(!true);
console.log(!false);

比较运算符

比较运算符也叫关系运算符, < > >= <= == != === !==, 关系运算符的结果是布尔类型

1
2
3
4
5
6
7
8
9
10
11
var a = 5;
var b = 6;
console.log(a > b);//大于
console.log(a < b);//小于
console.log(a >= b);//大于等于
console.log(a <= b);//小于等于

console.log(a == b); //相等,只比较值,不比较类型
console.log(a === b); //全等,比较类型和值
console.log(a != b); // 不等, 只判断值,不判断类型
console.log(a !== b); // 不全等 判断值,且判断类型

运算符优先级

  • ()的优先级最高
  • 一元运算符(++, –, !)
  • 算术运算符(先*/%, 后+-
  • 关系运算符 (先> < >= <=, 后== === != !==)
  • 逻辑运算符(先&&||

不确定的时候,使用()增加优先级

类型转换

查看变量的类型

typeof关键字可以查看数据的类型

1
2
3
4
var num = 11;
console.log(typeof num);
num = "abc";
console.log(typeof num);

在控制台可以根据颜色来判断数据类型

转换成数字类型

  • Number()
1
2
console.log(Number('55'));
Number()可以把任意值转换成数值类型,但是如果字符串中有不是数字的字符,返回NaN
  • parseInt()
1
2
var num1 = parseInt("12.3abc");  // 返回12,如果第一个字符是数字会解析直到遇到非数字结束
var num2 = parseInt("abc123"); // 返回NaN,如果第一个字符不是数字或者正负符号就返回NaN
  • parseFloat()
1
2
3
4
parseFloat()把字符串转换成浮点数
parseFloat()和parseInt()非常相似,不同之处在与
parseFloat会解析第一个. 遇到第二个.或者非数字结束
如果解析的内容里只有整数,解析成整数
  • 算术运算
1
2
3
4
var str = '500';
console.log(+str); // 取正
console.log(-str); // 取负
console.log(str - 0);

NaN

NaN: not a number, 表示一个number类型的非数字

在js中,NaN用来表示一个非数字的特殊值,当发现无法进行运算时,js不会报错,而是会返回一个NaN

NaN的注意事项:

  • NaN的类型是number类型的,表示一个非数字
  • NaN不等于任何值,包括NaN本身
  • 通过isNaN()可以判断一个number类型的值, 是否是一个数字,返回false的时候,表示是一个数字。
1
2
var num = 5;
console.log(isNaN(5));

转换成字符串

  • toString()
1
2
3
var num = 5;
console.log(num.toString());// 把数值5变成字符串5
//将来所有的数据都会有toString()方法,除了null和undefined
  • String()
1
2
3
var num = 5;
num = String(num);
console.log(num);
  • 拼串,使用起来最方便
1
2
3
var num = 5;
num = num + "";
console.log(num);

转换成布尔类型

所有的值都可以转换成布尔类型

其中,""NaNundefinednull0false这几个值会转换成false,其他值都会转换成true

  • Boolean()
1
2
console.log(Boolean(1));
console.log(Boolean(0));
  • !!
1
2
var a = "abc";
console.log(!!a);