js01

问题

  • const的常见错误有哪些?
  • 解释弱类型与编译强类型的区别是什么?
  • undefined与null分别是什么类型?
  • Infinity与NaN有哪些区别,NaN === NaN的结果是什么?
  • console.log(0xf,1.9e405)这个语句输出的是什么?

JAVASCRIPT(JS)

  • 发展历史
    1995 网景 LiveScript->JavaScript
    1996 微软 JScript
    Ecma
    TC39 ECMA-262
    1997 ES1
    ES5(ECMAScript5)->2015年6 ES6(ES2015)->....

  • 客户端JS的组成部分
    ES(核心语言) 变量、数据类型、函数、对象、数组,语句...
    DOM 文档对象模型
    BOM 浏览器对象模型

  • JS作用
    浏览器JS做网页特效
    手机APP
    游戏
    服务器端(node)
    ...
    JS是一门脚本语言(嵌入在其他语言中执行) 解释型语言,不用编译,执行一行算一行。

    • 弱类型,说白了就是数据类型分的不细
    • 强类型(java),就是数据类型分的较细,用编译,编译通过后,统一执行。
  • 数据类型

    基本数据类型(原始数据类型)

    number 数值 string 字符串 boolean 布尔类型 null 空 undefined 未定义 es6新增Symbol

    对象数据类型(引用数据类型) 数组 函数 日期 数学 ...

  • null 空 undefined

    null表示没有对象 该处不应该有值

    undefined 表示缺少值,此处应该有值,但没有定义

  • 变量名的命名规范

    1.字母、数字、_、$组成

    2.不能以数字开头

    3.区分大小写 a A
    4.不能是关键字和保留字
    if/else/for...

    5.名字有语义


代码区:

    <div onclick="alert('hello js');">我是一个div</div>
    <script>
        alert('hello world');
    </script>
    <script src="./my.js">
        alert('ifullstack'); // 此处的js代码会被忽略
    </script>
  • const
//练习一:
//错误TypeError:
const a1 = 10;

console.log(typeof a1);	

a1 = 10.9;   //Uncaught TypeError(未捕获类型错误): Assignment to constant variable.

console.log(typeof a1);

//练习二:
const a = null;

let b;
// if const b;就会报错Uncaught SyntaxError: Missing initializer in const declaration

console.log(typeof a);
console.log('b:',b);
console.log(typeof b);

/**
    object
    b: undefined
    undefined
 */
  • 计算机cpu运算:十进制的小数转二进制小数有精度损失
const a1 = 0.1+0.2;
const a2 = 0.3;
console.log(a1 === a2); //false
  • Infinity是number类型,表示超过范围
 //练习三:
console.log(typeof Infinity);	//number
console.log(2.3e3); //2300
//8进制
console.log(010);   //8
//0x是16进制的开头
console.log(0xf,1.9e405);   //15,Infinity


console.log(isFinite(1.9e405)); // false表示超过了范围
console.log(isFinite(1.9e5));	//true

console.log(Infinity === Infinity); //true
console.log(Infinity === -Infinity); //false

  • NaN是number类型
console.log(typeof NaN);	//number
console.log(NaN === NaN);   //false		
console.log(NaN + 1); // NaN

const a = NaN;
const b = '1r'
const c = '1'
const d = 1;

console.log(isNaN(a));  //true		 NaN是一个not a number
console.log(isNaN(b));  //true		'1r'是一个not a number
console.log(isNaN(c));  //false		'1'不是一个not a number,'1'是一个number,这个是bug,需要特殊处理
console.log(isNaN(d));  //false	 	 1是一个number
console.log(isNaN(null));   //false		null是一个number这个是bug,需要特殊处理。
console.log(isNaN(undefined));  //true	undefined是一个not a number。

  • \转义符
console.log("abc\'d\'");    //  abc'd'

console.log(`${'\''}${'a'}${1+8*7/2}${'b'}${'\''}`);  //   'a29b'