目录
JavaScript
解释性语言,在运行是进行及时解释。与Java(编译性语言)不同
一、数据类型
1.undefined数据类型
undefined + 字符串=undefined+‘字符串’
undefined+数字=NaN;
var str;
console.log(str);
var variable=undefined;
console.log(variable+"test"); //undefinedtest
console.log(variable+1); //NaN
2.null数据类型
null + 字符串=null+‘字符串’
null+ 数字 = 数字
3.数据类型转换
3.1转换为字符串
3.2转换为数字型
二、函数
1.函数实参形参不匹配
function getSum(num1,num2){
console.log(num1+num2);
}
1. 如果实参个数等于形参个数一致,正常输出结果
2. 如果实参个数大于形参个数,则去形参个数
getSum(1,2,4); //结果为3
3. 如果实参个数小于形参个数,多于的形参定义为undefined,结果是NaN
注:形参可以看做不用声明的变量,num2是一个变量但没有接收值,结果就是undefined·
getSum(1); //结果是NaN
2.返回值
函数如果有return,返回return后的值,如果没有返回undefined
3.arguments
当我们不确定有多少个参数传递时,可以用arguments来获取。在JavaScrit中,arguments实际上它是当前函数的一个内置对象。所有函数都内置了一个arguments对象,arguments对象中存储了传递的实参。
function fn(){
console.log(arguments);//里面存储了所有传递的实参
}
fn(1,2,3);
arguments展示形式是一个伪数组,因此可以进行遍历。
伪数组具有以下特点:
- 具有length属性。
- 按索引方式存储数据
- 不具有数组的push,pop等方法。
function fn(){
console.log(arguments);//里面存储了所有传递的实参
console.log(arguments.length);//具有length属性。
console.log(arguments[2]);//按索引方式存储数据
}
arguments例子
//arguments利用
function getMax() {
var max = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
console.log(getMax(1, 2, 3)); //3
console.log(getMax(1, 2, 3, 4, 5)); //5
console.log(getMax(11, 422, 6343, 34673)); //34673
4.声明方式
1. 利用函数关键字自定义函数(命名函数)
function fn() {
}
fn();
2.函数表达式(匿名函数)
var fun = function(){
console.log('我是匿名函数');
}
fun();
- fun是变量名,不是函数名。
- 函数表达式声明方式跟声明变量差不多,只不过变量例存的是值 而 函数表达式存的是函数。
- 函数表达式也可以传递参数。
三、作用域链
- 只要是代码,就至少有一个作用域
- 卸载函数内部的局部作用域
- 如果函数中还有函数,那么这个作用域中就可以有诞生一个作用域
- 根据内部函数可以访问外部函数变量的机制,用链式查找决定哪些数据能被内部函