文章目录
1.初识js
1.1Js的组成
1.1.1ES是什么
-
ECMAScript是由ECMA国际进行标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMAScript语言的实现和扩展。ECMAScript规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
1.1.2DOM(文档对象模型)
1.1.3 BOM(浏览器对象模型)
1.2 JS的三种写法
- 行内式
- 如:
<button onclick="alert('click')" >click me</button>
- 内嵌式
- 如:
<script> alert("click") </script>
- 外部引用
- 如:
<script src="main.js"></script>
2.变量
2.1 变量的本质和声明变量的本质
- 变量的本质是内存中一块空间,用来存储数据
- 声明变量的本质是去内存申请空间
2.2 变量语法拓展
2.2.1 只声明不赋值
var a;
console.log(a);
// =>undefined
2.2.2 不赋值不声明
console.log(b);
// =>报错
2.2.3 只赋值不声明
c = 10;
console.log(c);
// =>10(不推荐)
3.数据类型
3.1变量的数据类型
- JS 是一种弱类型动态语言。这意味看不用提前声明变量的类型,在程序运行过程中,类型会
被自动确定。 - 在代码运行时,变量的数据类型由js引擎根据“=”号右边的值的数据类型来判断
- js中,相同的变量可以赋值不同的类型,如
var a = 5; a = "fdss"
3.2 数字型
- NaN(Not a num)
- isNaN(x): 判断x是否是一个数字类型
3.3 字符串型
- 只要有字符串和其他类型拼接,结果就是字符串
cosole.log('12' + 12);
// => '1212'
- 用prompt函数输入的任何东西都是字符类型
3.4 布尔类型
- true参与运算的时候当1算,false当0算
3.5 undefined(未定义数据类型) 和 null
-
如果一个声明变量没有赋值,就是undefined类型
-
undefined/null 和 String类型 Number类型 Boolean类型相加
var str2 = undefined;
console.log(str2 + "aaa"); // => undefinedaaa
console.log(str2 + 1); // => NaN
console.log(str2 + true); // => NaN
var str3 = null;
console.log(str3 + "aaa"); // => nullaaa
console.log(str3 + 1); // => 1
console.log(str3 + true); // => 1
3.6 数据类型转化
3.6.1 数字型转字符型
var num = 10;
var str = num.toString();
console.log(str); // => (String)10
console.log(String(num)); // => (String)10
console.log(num + ''); // => (String)10 最常用
3.6.2 字符型转数字型
//1 parseInt 取整
console.log(parseInt('3.555')); // => (Number)3
console.log(parseInt("333aaa")); // => (Number)333
console.log(parseInt('aaa333aaa')); // => (Number)NaN
//2 parseFloat 得到浮点数
console.log(parseFloat('3.555')); // => (Number)3.555
console.log(parseInt("333.555aaa")); // => (Number)333
console.log(parseInt('aaa333aaa')); // => (Number)NaN
//3 强制类型转化
console.log(Number('12')); // => (Number)12
//4 隐式转化
console.log("12" - 0); // => (Number)12
console.log("12" - "10"); // => (Number)2
console.log("12" * 1); // => (Number)12
3.6.3 任何类型转Boolean
console.log(Boolean("")); // => false
console.log(Boolean(0)); // => false
console.log(Boolean(NaN)); // => false
console.log(Boolean(null));// => false
console.log(Boolean(undefined));// => false
// 其余均为 true,可当作是否非空的判断
4.解释型语言和编译型语言
翻译器翻译的方式有两种:一个是编译,另外一个是解释。两种方式之间的区别在于翻译的时间点不同
编译器(java所用, 如javac.exe)是在代码执行之前进行编译,生成中间代码文件(如main.class)
解释器(js所用, 如v8内核)是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器)
(pink老师的图)