JavaScript的特点
解释型语言
JavaScript是一门解释型语言,所谓解释型值语言是指不需要被编译为机器码在执行,而是直接执行。由于少了编译这一步骤,所以解释型语言开发起来尤为轻松,但是解释型语言运行较慢也是它的劣势。不过解释型语言中使用了JIT技术,使得运行速度得以改善。
动态语言
JavaScript是一门动态语言,所谓的动态语言可以暂时理解为在语言中的一切内容都是不确定的。比如一个变量,这一时刻是个整型,下一时刻可能会变成字符串了。当然这个问题我们以后再谈。不过在补充一句动态语言相比静态语言性能上要差一些,不过由于JavaScript中应用的JIT技术,所以JavaScript可能是运行速度最快的动态语言了。
类似于 C 和 Java 的语法结构
JavaScript的语法结构与C和Java很像,向for、if、while等语句和Java的基本上是一模一样的。所以有过C和Java基础的同学学习起来会轻松很多。不过JavaScript和与Java的关系也仅仅是看起来像而已。
基于原型的面向对象
JavaScript是一门面向对象的语言。
Java也是一门面向对象的语言,但是与Java不同JavaScript是基于原型的面向对象。
严格区分大小写
JavaScript是严格区分大小写的,也就是abc和Abc会被解析器认为是两个不同的东西。
JavaScript的使用
标签引用
在HTML中在script标签中就可以编写JavaScript代码
<script>
alert("Hello,World!");
</script>
JS的输入
弹出一个输入框
// 弹出一个输入框
prompt("请输入您的姓名:");
JS的输出方式
页面输出
用JavaScript向页面输出一句话,
<script>
document.write("Hello,World!");
</script>
控制台输出
用JavaScript向控制台输出一句话
<script>
console.log("输出一条日志");
</script>
弹出窗口输出
<script>
alert("Hello,World!");
</script>
其他
Ctrl+ / 是注释快捷键
单行注释:// 注释内容
多行注释:/* 注释内容 */
数据类型
JavaScript中一共有5种基本数据类型和Object对象:
字符串型(String):
字符串需要使用 单引号 或 双引号 括起来。
数值型(Number):
Number 类型用来表示整数和浮点数,最常用的功能就是用来表示10进制的整数和浮点数。
布尔型(Boolean)
布尔型只能够取真(true)和假(false)两种数值
undefined型(Undefined)
Undefined是未被定义的,也就是说只有声明没有初始化就是Undefined
null型(Null)
注:null表示的是一个空的对象,但用typeof检查null会返回一个Object。
- 使用typeof操作符可以用来检查一个变量的数据类型。
JS的动态类型
. JS 的变量类型是程序运行过程中才确定的(运行到 = 语句才会确定类型)
JS的转义字符
\n
\
’
"
\t
JS的函数
// 创建函数/函数声明/函数定义
function 函数名(形参列表) {
函数体
return 返回值;
}
// 函数调用
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值
函数定义并不会执行函数体内容, 必须要调用才会执行. 调用几次就会执行几次.
调用函数的时候进入函数内部执行, 函数结束时回到调用位置继续执行. 可以借助调试器来观察.
函数的定义和调用的先后顺序没有要求. (这一点和变量不同, 变量必须先定义再使用)
注意: 实参和形参之间的个数可以不匹配. 但是实际开发一般要求形参和实参个数要匹配
如果实参参数比形参参数多,那么多出来的不参与处理
如果实参参数比形参参数少, 那么多出来的形参值为undefined
函数表达式
var add = function() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum += arguments[i];
}
return sum;
}
console.log(add(10, 20)); // 30
console.log(add(1, 2, 3, 4));
此时形如 function() { } 这样的写法定义了一个匿名函数, 然后将这个匿名函数用一个变量来表示. 后面就可以通过这个 add 变量来调用函数了
注意: 函数可以用变量保存, 也可以作为其他函数的参数或者返回值
JS的对象
- 使用 字面量 创建对象 [常用]
使用 { } 创建对象 , 属性和方法使用键值对的形式来组织.
键值对之间使用 , 分割. 最后一个属性后面的 , 可有可无
键和值之间使用 : 分割.
方法的值是一个匿名函数
var student = {
name: '狗子',
height: 175,
weight: 170,
sayHello: function() {
console.log("hello");
}
};
// 1. 使用 . 成员访问运算符来访问属性
.
可以理解成 “的”
console.log(student.name);
// 2. 使用 [ ] 访问属性, 此时属性需要加上引号
console.log(student[‘height’]);
// 3. 调用方法, 别忘记加上 ()
student.sayHello();
JavaScript 的对象和 Java 的对象的区别
- JavaScript 没有 “类” 的概念
对象其实就是 “属性” + “方法” . 类相当于把一些具有共性的对象的属性和方法单独提取了出来
JavaScript 中的 “构造函数” 也能起到类似的效果.
- JavaScript 对象不区分 “属性” 和 “方法”
JavaScript 中的函数和普通的变量一样. 存储了函数的变量能够通过 ( ) 来进行调用执行.
- JavaScript 对象没有 private / public 等访问控制机制.
对象中的属性都可以被外界随意访问.
- JavaScript 对象没有 “继承”
继承本质就是 “让两个对象建立关联”. 或者说是让一个对象能够重用另一个对象的属性/方法.
5 JavaScript 没有 "多态
在 JavaScript 中本身就支持动态类型, 程序猿在使用对象的某个方法的时候本身也不需要对对象的类型做出明确区分. 因此并不需要在语法层面上支持多态.
JavaScript写法
1行内式写法
<input type="button" value = "点击" , onclick ="concols,log(hello)">
2 内嵌式写法(写在body前面)
alert(document.getElementBody('btnl').value);
变量声明
1: var - var诞生的更早, 而let诞生的更晚
2 : let - 作用域上表示不同, var是全局变量, 而let适合局部变量