1. 数据类型
JavaScript是一种弱类型的语言,对于如何使用不同类型的数据没有严格要求。常用的基本数据类型有:
- 数值:整数和小数
- 文本数据:js中文本数据需要放在双引号中(“hello world!”)
- 布尔类型:布尔类型值只有 true&false,表示真假
除了基本数据类型外,js还有对象数据类型(Object)
2. 变量
2.1 变量保存在内存当中,用于保存临时数据。js中变量名称严格区分大小写,基本命名规则:
- 不能以数字开头
- 不能包含特殊字符:&和%
- 不能使用js的保留字:var、with ….
2.2 创建变量与赋值
js中使用关键字 var 来声明变量,声明变量之后就能用变量来存储任意类型的数据。因为js是
弱类型的语言,所以在什么变量的时候无需指定变量保存的数据类型。
<script type="text/javascript">
// 声明一个变量,无需指定变量存储的数据类型
var myVariable;
// 给变量赋值
myVariable = "Hello!";
alert(myVariable);
// js中变量存储的数据类型可以改变,神奇!
myVariable = 321;
alert(myVariable);
// 声明一个变量但未赋值,此时变量的值是:undefined
var testVariable;
</script>
2.3 数据类型转换
- 将字符串转换为数值:parseInt() 和 parseFloat()
- 处理无法转换为数值的字符串:如果试图将 “hello!” 转换为数值,得到的将是 NaN(Not a number)。函数isNaN()用来测试字符串字否是数值,不是数值返回true,是数值返回false
3. 数组
与变量不同,数组可以保存多个数据(元素),数组通过索引值index来区分数组中的数据项。
<script type="text/javascript">
// 声明数组的原始方式,利用new关键字和Array()函数
var myArray = new Array();
// 实际开发中使用数组字面值创建数组,声明数组时无需指定数组大小。
// 数组中每一个元素都可视为一个标准变量,同一数组中可以保存不同类型的数据。。。神奇!
var myArray = [];
// 为数组中元素赋值
myArray[0] = "Paul";
myArray[1] = 32;
myArray[2] ="John";
myArray[3] = 27;
// 如果程序试图访问数组中未定义的元素,则返回undefined
alert(myArray[10]);
</script>
4. 函数和作用域
4.1 函数的要点:
- 在js中定义的每个函数在该页面上必须有唯一名称
- 使用return语句,函数可以将值返回给调用它的代码,未使用return语句则默认返回undefined
- 函数的代码只有在被要求时才会执行,称为函数调用
<script type="text/javascript">
// 自定义函数,function为关键字
function convertToCentigrade(degFahren){
// 声明一个内部变量
var degCent = 5 / 9 * (degFahren - 32);
// 返回值
return degCent;
}
// 调用函数
var temp = convertToCentigrade(32);
</script>
4.2 作用域
js中变量的作用域分为全局作用域和局部作用域。全局作用域的变量声明在函数外面,能被整个页面所有脚本引用。因此,全局作用域的变量很容易被不经意地修改,在实际开发中尽量避免使用。
<script type="text/javascript">
// 全局变量,定义在函数之外
var degFahren = 12;
function convertToCentigrade(degree){
// 局部变量,定义在函数内部。函数的参数也是局部作用域的。
var degCent = 5 / 9 * (degree - 32);
}
</script>
如果局部变量和全局变量具有相同的名称,那么js引擎会通过标识符查找在当前作用域内查找变量,局部变量的运算优先级高于全局变量。
4.3 将函数用作值(js最神奇的操作)
在js中可以像使用其他任何值一样来使用函数,比如将函数作为参数传递给另一个函数。。。
<script type="text/javascript">
function convertToCentigrade(degree){
var degCent = 5 / 9 * (degree - 32);
}
// 将函数引用赋值给一个变量...
//注意函数名称后面没有括号,有括号就变成了函数调用了
var myFunction = convertToCentigrade;
function doSomething(fn){
fn("Helle World!");
}
// 将一个函数作为参数传递给另一个函数。alert()
doSomething(alert);
</script>