JS类型基础及显隐式转换

  1. JS模拟多线程
    轮转时间片:短时间内轮流执行多个任务的片段
    a. 任务1 任务2
    b. 切分任务1 任务2
    c. 随机排列这些任务片段,组成队列
    d. 按照这个队列顺序将任务片段送进JS进程
    e. JS线程执行一个又一个的任务片段

  2. script执行需注意

只会运行外部引用,内部不再执行

<script type="text/javascript" src="js/index.js">
    document.write('bababa');
</script>

都可以执行
若有错误,互相也不影响运行

<script type="text/javascript">
    document.write('bababa1');
</script>
<script type="text/javascript">
    document.write('bababa2');
</script>

写错不会执行,可故意写错用作模板

<script type="text/tpl">
    <tr>
        <td>{{id}}</td>
        <td>{{name}}</td>
        <td>{{price}}</td>
    </tr>
</script>
  1. JS的值
原始值引用值
Number string boolean undefined nullobject (array function data RegExp)
栈-先进后出 若重新赋值,是重新开辟内存指向更改,原内存地址里的值不是直接修改的地址存在栈内存,值存在堆内
  • 0 / 0 === NaN
  • 1 / 0 === Infinity
  • -1 / 0 === -Infinity
  • “a” / “b” === NaN
  • NaN / NaN === NaN
  • NaN != NaN 与任何都不相等,比大小也一直false
  • 若实在要比较NaN,可以NaN + ‘’ === ‘NaN’
  • undefined null NaN “” 0 false都为假,Boolean()方法出来都是false,但只有后三个 == false 和 == 0
  • typeof null 为object的原因是,历史遗留问题,一开始null是代表空对象
  • {} !== {} 因为对象地址不同,若要相同可以obj = {}; obj1 = obj;
  1. 显式类型转换
Number()方法parseInt()方法parseFloat()方法
数字字符串、Boolean、null可以,其他都是NaN向下取整,字符串从头开始返回数字,可传第二个参数进制数 parseInt(10, 16) = 16,radix 2-36 超过了的话NaNtoFixed() 输出四舍五入,字符串类型
  1. 隐式类型转换
  • 数字与字符串比较大小,字符串先转化为数字
  • 两个字符串比较大小,一位位比较Ascii码:数字 < 大写字母 < 小写字母
  • undefined == null true 并且两者与0比较都一直是false
  • 任何数据类型的值 + 字符串 = 字符串
  • 减乘除模都会转换成number进行运算,没有字符串的加也会转为number
  • a++ 会进行Number
  • +a -a会直接Number方法
  • isNaN 会进行Number

栗子:

typeof a && (-true) + (+undefined) + '' // 'NaN'
//'undefined' -1       NaN 
if (1 + 5 * '3' === 16) console.log(1); // 1
else console.log(0);
console.log(!!' ' + !!'' - !!false || '通过'); // 1
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值