JavaScript基础知识总结复习(一) | 青训营笔记

89 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

一、 JS三种书写位置

  • 行内式
<input type="button" value="点击了按钮" onclick="alert('我是行内js')">
<!-- html中使用双引号,js中使用单引号 -->

html中使用双引号,js中使用单引号

  • 内嵌式
    <script>
       alert('我是内嵌式js');
       alert('我是内嵌式js')
   </script>
  • 外部引用
   <script src="my.js"></script>
   <!-- 两个标签中间不可以再写代码了 -->

要注意!!两个标签中间不可以再写代码了

二、 声明变量、输入输出、数据类型

1.基本使用

     //1.声明年龄age变量
     var age;
     //2.prompt读取用户输入
     age = prompt('请输入年龄',18);
     //3.alert输出
     alert('年龄是'+age);
     //4.console.log控制台输出
     console.log(age);

2.同时声明多个变量

var age = 18,
    address = 'guangzhou',
    phone = 13700;

3.数据类型

  • js的数据类型有:
数据类型默认值
Number0
Booleanfalse
String' '
Undefinedunderfined
Nullnull
  • js变量数据类型可变(弱类型)
    var num = 12;
    num = 'red';
    
  • js字符串长度与拼接
var str1 = 'abbbss';
var str2 = 'ccdd';
console.log('str1的长度为:'+str1.length);  //强制类型转换 str1的长度为:6
console.log(str1+str2);                   //abbbssccdd

console.log(true + 'abc');               //trueabc js字符最大
console.log(undefined + 'abc');           //undefinedabc js字符最大
console.log(null + 'abc');                 //nullabc js字符最大

console.log(true + 1);                   //2
console.log(undefined + 1);              //NaN
console.log(null + 1);                   //1     null和undefined的区别
  • typeof 检测数据类型
console.log(typeof('abc'));    //string
console.log(typeof(abc));      //undefined
console.log(typeof(NaN));      //number
console.log(typeof(null));     //object
  • js数据类型转换
//转string
var num = 1; 
//1.
alert(num.toString()); 
//2.
alert(String(num));
//3.
alert(String(num+''));

//转number
var str = '12.34px' ;
//1.
alert(parseInt(str));               //12
//2.
alert(parseFloat(str));             //12.34
//3.
alert(str - 0);                     //- * /隐式转换 12.34
//4.
alert(Number(str));                 //12.34

//转boolean
//0、NaN、null、undefined 都是false 其余都是true
alert(Boolean(0));                 //false

三、运算符与运算

1.js浮点数运算

alert(0.1+0.2) //0.0.30000000000000004 js浮点数不能直接相比较
//
var num = (0.1*10 + 0.2*10) / 10
alert(num)                  //0.3
alert(num == 0.3)           //true

2.'==='与'=='的区别

  • '==='要求变量类型和值都相等,'=='仅仅要求值相等(==会将字符数据转换为数字型)
console.log(12 == '12')   //true
console.log(12 === '12')  //false

3.逻辑中断(短路运算)

  • 如果'&&'前面的表达式为真,则返回第二个表达式
  • 如果'&&'前面的表达式为假,则返回第一个表达式,剩下的不执行
console.log(123 && 12)   //12
console.log(0 && 12)     //0
  • '||'找表达式中第一个为真的值返回,剩下的不执行

四.JS异步

  • js没有真异步,js的异步是通过主线程和异步子线程分开按顺序执行来实现的,两者之间有主次,即先执行主线程,再执行异步子线程

  • 执行顺序:同步 > 异步 > 回调

for (var i = 0; i < 5; i++) {
   setTimeout(function() {
       console.log('i: ',i);
   }, 1000);
}

console.log(i);

//输出
5
i:  5
i:  5
i:  5
i:  5
i:  5
  • 在上述代码for循环和外部的console是同步的,所以先执行for循环,读到回调的时候,将其加入消息队列堆栈(未被执行),再执行外部的console.log。

  • 主线程执行后,最后执行堆栈中的setTimeout回调

五.未完待续......