1, 编译型语言和解释型语言之间的区别?
主要区别在于,前者源程序编译后即可在该平台运行,后者是在运行期间才编译。所以前者运行速度快,后者跨平台性好。
编译型语言;使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式。
2, JS代码写在head中和写在body中的区别?
javascript代码写在<head>里面:
由于这时候网页主体(body)还未加载,所以这里适合放一些不是立即执行的自定义函数,立即执行的语句则很可能会出错(视浏览器而定)
javascript代码写在<body>里面:
这里可以放函数也可以放立即执行的语句,但是如果需要和网页元素互动的(比如获取某个标签的值或者给某个标签赋值),Javascript代码务必在标签的后面
javascript代码写在<body>下面:
这时候整个网页已经加载完毕了,所以这里最适合放需要立即执行的命令,而自定义函数之类的则不适合。
3, JS中new关键字的用法
new会在内存中创建一个新的空对象
new 会让this指向这个新的对象
执行构造函数 目的:给这个新对象加属性和方法
new会返回这个新对象
创建一个空对象
将空对象的__proto__指向构造函数的prototype
使用空对象作为上下文调用构造函数
4, 栈和堆的理解?
栈(stack):栈会自动分配内存空间,会自动释放,存放基本类型,简单的数据段,占据固定大小的空间。
基本类型:String,Number,Boolean,Null,Undefined
堆(heap):动态分配的内存,大小不定也不会自动释放,存放引用类型,指那些可能由多个值构成的对象,保存在堆内存中,包含引用类型的变量,实际上保存的不是变量本身,而是指向该对象的指针。
引用类型:Function,Array,Object
变量:JavaScript 变量是存储数据值的容器。
变量声明
var (永远不要用,垃圾js带来的垃圾语法)
const 常量(1.声明赋值在一行。2.只能赋值一次)
let 变量(1.不能重复声明。2.声明之前不能使用)
一、基本数据类型(值类型)
1.字符串类型/String
2.数字类型/Number
3.布尔类型/Boolean
4.Null
5.Undefined
二、复杂数据类型(引用类型)
1.对象类型/Object
2.数组类型/Array
3.函数类型/Function
变量的命名规则:
1,变量以字母, _, $命名;
2,名称中可以包含数字,但是不能以数字开头;
3,名称中不能使用关键字 命名;
4,名称的长度不能255个字符,尽量见名思意;
5,推荐 驼峰命名规则 userName getElementById;
6,可以使用中文命名, 但是不推荐 low
7,区分大小写 userName 和username 表示不同的变量
数据类型转换
一.转换成字符串类型:
1. 变量+“” 或者 变量+“abc”
2. String(变量)
3. 变量.toSting() 注意:undefined和null不可以
toFixed(x)
把数字转换为字符串,结果的小数点后有指定位数的数字。
Null和undefined无toString方法。
二.任何简单类型转换成Number
1.变量 - * /一个数字(有非数字字符会出现NaN)
2.Number(变量)(有非数字字符会出现NaN)
3.parseInt()和parseFloat()(译为取整和取浮点数)
parseInt(变量):如果变量中首个字符为字母则结果为NaN。
否则取出现首个非数字前的整数。
parseFloat(变量):如果变量中首个字符为字母则结果为NaN。
否则取出现首个非数字前的浮点数。(没有小数取整)
隐式转换
字符串和数字之间进行减、乘、除、取模运算、比较运算 时,自动把字符串转换为数字
加法运算 则是将数字看成字符串进行拼接
数值型+字符串=字符串
数值型+布尔型=数值型
布尔型+字符串=字符串
(1)字符串型转换为数值型
parseInt()可以将字符串转换为整型数据
parseFloat()可以将字符串转换为浮点型数据
(2)字符串转换布尔型
Boolean()方法,字符串转布尔,空字符串为false,其余都是true;null和undefined都会转换为false
(3)数值型转换为字符串型
将数值型数据(整型或浮点型)转换为字符串, 都是使用toString()方法。 null和undefined这两个值没有toString方法,
如果他们调用toString方法会报错
(4)数值型转换布尔型
Boolean()方法,数字转布尔,0和NaN为false,其余都是true