问题一:js中的var、let、const的区别
1.const定义的变量不可以修改,而且必须初始化。
const a;//错误,必须初始化
const a = 2;//正确
console.log('函数外const定义a:' + a);//有输出值 2
a = 5;
console.log('函数外修改const定义a:' + a);//无法输出
2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错。
var a = 1;
var a;//不会报错
console.log('函数外var定义a:' + a);//可以输出a=1
function change(){
a = 2;
console.log('函数内var定义a:' + a);//可以输出a=2
}
change();
console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=2
3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。
复制代码
let c = 1;
console.log('函数外let定义c:' + c);//输出c=1
function change(){
let c = 2;
console.log('函数内let定义c:' + c);//输出c=2
}
change();
console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=1
问题二:JS中怎样判断数据类型为undefined
通过使用typeof进行数据类型判断,如果list对象不是undefined类型则进行if操作,否则跳过if操作,示例如下:
if (typeof list !== 'undefined') {
for (let i = 0; i < list.length; i++) {
if (typeof list[i].assessor === 'undefined') {
Object.assign(list[i],{assessor:_A_P_userName});
}
}
}
额外补充:
typeof 返回值有6种:“number” “String” “boolean” “object” “function” “undefined”
一、对于数字类型的操作数而言, typeof 返回的值是 number。
二、对于字符串类型, typeof 返回的值是 string。比如typeof(“123”)返回的值是string。
三、对于布尔类型, typeof 返回的值是 boolean 。比如typeof(true)返回的值是boolean。
四、对于对象、数组、null 返回的值是 object 。比如typeof(window),typeof(document),typeof(null)返回的值都是object。
五、 对于函数类型,返回的值是 function。比如:typeof(eval),typeof(Date)返回的值都是function。
六、如 果运算数是没有定义的(比如说不存在的变量、函数或者undefined),将返回undefined。比如:typeof(sss)、typeof(undefined)都返回undefined。
学习阶段。有错误,望指出。