JavaScript 03-10

定义未赋值和未定义的变量的区别

// 定义未赋值 只是定义了变量,但是没有给变量进行赋值操作
var int1 ;
console.log(int1);    // 未赋值 执行结果是 undefined

// 直接使用一个没有定义过的变量
console.log(int2);    // 未定义 执行结果是 报错

NaN

NaN,not a number 不是一个数值,是表示存储的数据的数据类型。

如果有非数值参与计算,结果就是 NaN

var str1 = '北京';
var str2 = '上海';
// 两个变量中存储的数据,都不是数值
// 执行结果就是NaN
var res1 = str1 - str2;
console.log(res1);

有NaN参与,结果就是NaN

var res2 = 100 - str1;
console.log(res2);

如果是 + 加号,两侧都是数值,执行加法运算。
有一个是字符串,就执行字符串拼接操作。

var res3 = 100 + str1;
console.log(res3);
总结

NaN虽然表示是一个非数字 , 但是一般是算术运算执行的结果,因此NaN 仍然是数值类型。

执行运算时,非加法运算,只要有NaN参与,执行结果都是NaN。
如果是加法运算,有 NaN 执行字符串拼接操作,都是数值执行加法运算
NaN永远不会等于NaN,NaN == NaN 执行结果是 false。
JavaScript的规定,NaN表示的是非数字,但是这个非数字也是不同的,因此 NaN 不等于 NaN,
两个NaN永远不可能相等

再比如:

console.log ( '北京' - 100 == '北京' - 100 );

这里比较的不是 ‘北京’-100 这个表达式,而是 ‘北京’-100 的结果。
左侧 ‘北京’-100 结果是 NaN,右侧 ‘北京’-100 结果是 NaN,但是 NaN 不等于 NaN 。
但是如果这里是加号而不是减号,就会执行字符串拼接,结果就是 true:

console.log ( '北京' + 100 == '北京' + 100 );//执行结果是 true

如何解决字符串不能解析变量?

在JavaScript中,单引号、双引号的字符串,都不能解析变量。你写的变量,只能显示为变量名称的字符串,不会显示为变量中存储的数值。比如:

var airPollution = 52 ;
console.log( '今天的空气污染是 : airPollution' );
//此时只能输出字符串 '今天的空气污染是 : airPollution',而不会显示52

解决这种问题,我们有两种方法:

方法1 使用字符串拼接方式
console.log( '今天的空气污染是 : ' +  airPollution);
方法2 使用模板字符串,可以解析变量
console.log( `今天的空气污染是 : ${
     airPollution}` );

模板字符串使用的是 反引号 键盘上方 1 左侧的按钮。
在模板字符串 反引号中 使用 ${变量} 包裹变量,就可以解析变量数值了。
字符串拼接和字符串解析变量 执行结果,没有区别,你爱用哪个用那个。

JavaScript的3种调试方式

JavaScript中,变量存储的数据,有时,我们知道是什么,有时不清楚内容,需要输出查看。
在 JavaScript中,有3种常用的查看调试方式:

// 1, window.alert('内容') --- 弹出提示框
window.alert('beijing');

// 2, document.write('内容') --- 在页面输出
document.write('北京');

// 3, console.log('内容') --- 控制台输出 --- 浏览器控制台 console 内容中
console.log('北京');

控制台输出是常用方式。

数据类型的检测

在JavaScript中,数据类型的检测,使用 typeof() 方法 / 函数。所谓的 方法 / 函数 , 现在指的是JavaScript给我们定义好的功能。
typeof 操作符返回一个字符串,表示未经计算的操作数的类型。

语法

typeof 运算符后接操作数:

  • typeof+空格+变量/数据(这种语法形式不推荐使用,容易程序执行错误)
  • typeof(变量/数据)

typeof 并不能非常准确的表示每一种数据类型,一般是使用判断 布尔类型数值类型字符串类型undefined类型。其他数据类型我们之后有更加准确,但是复杂的判断方式。

实例

整数,浮点数,NaN 执行结果都是 number:

var int1 = 100;
var float1 = 100.123;
console.log( typeof(int1) );   //执行结果是 number
console.log( typeof(float1) ); //执行结果是 number
console.log( typeof(NaN) );    //执行结果是 number

布尔类型的执行结果是 boolean:

var bool1 = true;    
console.log( typeof(bool1) );  //执行结果是 boolean

字符串类型的执行结果是 string:

var str1 = '北京';
console.log( typeof(str1) );   //执行结果是  string

undefined 执行结果是 undefined:

console.log( typeof(undefined) );//执行结果是 undefined

null 执行结果是 object:

console.log( typeof(null
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值