js基础

会有一股神秘感。 提交于 2020-01-11 16:30:45

目录:

 

1、js介绍
    * js是一款运行在客户端的网页编程语言。最初的目的是为了处理表单的验证操作。
        - 弱类型语言
        - 脚本语言
        - 解释型语言
        - 动态类型的语言
        - 基于对象的语言
    * 组成
        - ECMAscript:js标准
        - DOM(Document Object Model):文档对象模型,通过js操作网页元素   
        - BOM(Bowser Object Model):浏览器对象模型,通过api操作浏览器
    * 特点:
        - 简单易用
        - 解释执行,无需编译
        - 基于对象
    * js的应用场景
        - 网页特效
        - 服务端开发(nodejs)
        - 命令行工具(nodejs)
        - 桌面程序(Electron)
        - app(Cordova)
        - 控制硬件-物联网(Ruff)
        - 游戏开发(coco2d-js)

 

2、js的书写位置
    * 内嵌式
        <script type="text/javascript">
            alert("Hello~");
        </script>
        
    * 外链式
        <script src="" type="text/javascript"></script>
        
    * html标签内嵌
        <input type='button' value='alert(hello~)' onclick='' />

 

3、js代码的注意事项和注释
    1)在一对script标签中有错误的js代码,该错误代码后面代码不执行
    2)一对script标签中有错误js代码,不会影响其他scrip标签js代码的执行
    3)script标签可以写成<script type='text/javascript'>,这是标准写法
       <script language='javascript'>或<script type='text/javascript' language='javascript'>也可以
        
    * js注释
        单行注释   //
        多行注释  /*  */

 

4、输出消息的几种方式
    * Javascript执行过程中的原理
        - html页面中出现<script>标签后,就会让页面暂停等待脚本的解析和执行。
          无论当前脚本是内嵌式还是外链式,页面的下载和渲染都必须停下来
          等待脚本的执行完成才能继续,这在页面的生命周期中是必须的。
 
    * alert():在页面弹出一个对话框,早期JS调试使用。
    
    * confirm():在页面弹出一个对话框(有确定|取消的标签), 常配合if判断使用。
    
    * console.log():将信息输入到控制台,用于js调试
    
    * prompt():弹出对话框,用于接收用户输入的信息。
        var ssd = prompt("请输入摄氏度");
        alert("温度为:"+ssd);
        
    * document.write():在页面输出消息或标签

 

5、变量
    * var num = 10; // 声明变量并初始化
    * 变量的命名规范
        - 不能以数字或者纯数字开头来定义变量名。
        - 不推荐使用中文来定义变量名。
        - 不能使用特殊符号或者特殊符号开头(下划线_除外);
        - 不推荐使用关键字和保留字来定义变量名。
    * 在JS中严格区分大小写的!!!

 

6、数据类型和typeof
    6种数据类型:number,string,boolean,undefined,null,object
    * 数字类型number
        var num1 = 2;//正数
        var num2 = -2.1;//负数,小数
        alert(typeof(num1));//number
        alert(typeof num2);//number
        
        十进制表示var num1 = 2;
        十六进制0x开头,0-9 a(A)-f(F)表示  var num3 = 0xffff;
        八进制 0开头,0-7组成
        
        Number.MIN_VALUE // 数字的最小值
        Number.MAX_VALUE // 数字的最大值
        
        console.log(0.1 + 0.2); // 0.30000000000000004
        console.log(1/0); // Infinity
    
    * 字符串类型string
        字符串:由单引号或双引号扩起来 var str = 'abc';
        console.log('10' + 5); // 15
        console.log(typeof('10' + 5)); // string
        console.log('10' - 5); // 5
        console.log(typeof('10' - 5)); // number
        转义字符
            \"   双引
            \'   单引
            \n   换行
            \r   回车  
    
    * 布尔类型boolean
        实际运算中true=1,false=0
        var flag = true;
        alert(flag + 1);//2
        
        var flag = false;
        alert(flag + 1);//1
        
        var a = 1;
        var b = 2;
        var c = a > b;
        alert(c);//false
    
    * undefined  变量未初始化
        定义了变量,没有给变量赋值,变量在内存中是存在的
        函数没有明确返回值,如果接收了,结果也是undefined
        var num;
        console.log(num + 10); // NaN
        console.log(isNaN(num + 10)) // true
        
    * null 变量未引用,值为空,在内存中没有该变量
        var nul = null
        console.log(typeof nul) // object

7、类型转换
    * string==>number
    - var num1 = Number("123");
        ** 数字类型的字符串,转换之后得到的数字。
        ** 非数字字符串,转换之后得到是NaN。
        ** 小数类型的字符串,转换之后得到的是原数字。
    - var num2 = parseInt("123");
        ** 整数数字类型的字符串,转换之后得到的整数数字。
        ** 数字开头的字符串,转换之后得到的是前边的数字。
        ** 非数字开头的字符串,转换之后得到的是NaN。
        ** 小数类型的字符串,转换之后【取整】,去除小数
    - parseFloat
        ** 整数数字类型的字符串,转换之后得到的整数数字。
        ** 数字开头的字符串,转换之后得到的是前边的数字。
        ** 非数字开头的字符串,转换之后得到的是NaN。
        ** 小数类型的字符串,转换之后得到的是原数字。

// 其他类型转数字类型
// 1. parseInt() 转整数
console.log(parseInt('10')) // 10
console.log(parseInt('10a')) // 10
console.log(parseInt('a10')) // NaN
console.log(parseInt('10.23')) // 10
console.log(parseInt('10.23a')) // 10
// 2. parseFloat() 转小数
console.log(parseFloat('10')) // 10
console.log(parseFloat('10a')) // 10
console.log(parseFloat('a10')) // NaN
console.log(parseFloat('10.23')) // 10.23
console.log(parseFloat('10.23a')) // 10.23
// 3. Number() 参数是一个数字才能转成功
console.log(Number('10')) // 10
console.log(Number('10a')) // NaN
console.log(Number('a10')) // NaN
console.log(Number('10.23')) // 10.23
console.log(Number('10.23a')) // NaN


// 其他类型转字符串
// 1. toString()
var num = 10;
console.log(typeof num.toString()) // string
//console.log(typeof num1.toString()) // 报错 num1 is not defined
// 2. String()
console.log(typeof String(10)) // string


// 其他类型转boolean类型
console.log(Boolean(1)) // true
console.log(Boolean(0)) // false
console.log(Boolean('')) // false
console.log(Boolean({})) // true
console.log(Boolean([])) // true
console.log(Boolean(null)) // false
console.log(Boolean(undefined)) // false

  

  隐式数据类型转换:在运算过程中,程序自己进行的数据转换(程序员没有操作),例如:

var n1=12;
var n2="2";
alert(n1-n2);//10

 

8、运算符

8.1、赋值运算符:=

  带操作的赋值运算 +=  -=  *=  /=

 

8.2、算数运算符:+ - * / %
  带操作的赋值运算 +=  -=  *=  /=

  js里面不区分整数和小数 123/1000*1000=123

var a;
a += 1; // a = a + 1;  
alert("456"+1); //结果是4561
alert("456"-1);//结果是455
alert("abc"-1);//结果是NaN
alert(flag+1); //flag为true(值为1),结果是2
alert(flag+1); //flag为false(值为0),结果是1

 

8.3、比较运算符
  <  >   <=  >=   ==  != === !==
  ==和===的区别:==比较值内容;===比较值和类型

 

8.4、逻辑运算符
  与&&  或||  非!

 

8.5、运算符++  --

var num = 10;
console.log(num++); // 10
console.log(num); // 11

var num1 = 10;
console.log(++num1); // 11

 

9、流程控制

  条件判断: if、else if、else

// 条件判断:if
var num = 10;
if (num > 5) {
    console.log('num 大于 5');
}

var num1 = 10
if (num1 > 5)
    console.log('num1 大于 5');
// 条件判断:if、else
var num2 = 2;
if (num2 > 5) {
    console.log('num2 大于 5');
} else {
    console.log('num2 不大于 5');
}

var num3 = 2;
if (num3 > 5)
    console.log('num3 大于 5');
else
    console.log('num3 不大于 5');
// 条件判断if、else if、else
var num4 = 10;
if (num4 > 10) {
    console.log('num4 大于10')
} else if (num4 < 0) {
    console.log('num4 小于0')
} else {
    console.log('num4 在0到10之间')
}

  三元表达式:  表达式 ? 结果1:结果2;
    如果表达式结果为true,执行结果1,如果表达式结果为false,执行结果2。可以理解为if else的另外一种写法。

 

  switch...case

var num = 2
switch (num) {
    case 1: 
        console.log('num为1');
        break;
    case 2:
        console.log('num为1');
        break;
    default:
        console.log('num不为1或2');
        break;
}
var str = 'b'
switch (str) {
    case 'a': 
        console.log('str为a');
        break;
    case 'b':
        console.log('str为b');
        break;
    default:
        console.log('str不为a或b');
        break;
}
// case穿透: 执行case 'a'后面的语句块后没有break, 继续执行,这就是case穿透
var str = 'a'
switch (str) {
    case 'a': 
        console.log('str为a');
    case 'b':
        console.log('str为b');
        break;
    default:
        console.log('str不为a或b');
        break;
}

   case穿透的应用场景

var month = prompt("请输入月份");
switch(month){
    case "3": case "4": case "5":
        alert("春季");
        break;
    case "6": case "7": case "8":
        alert("夏季");
        break;
    case "9": case "10": case "11":
        alert("秋季");
        break;
    case "12": case "1": case "2":
        alert("冬季");
        break;
    default:
        alert("您在火星");
        break;
}    

 

  while循环

var i = 0;
while (i < 10) {
    console.log(`i=${i}`)
    i++;
}
console.log(`最后i=${i}`)

  do...while循环

var i = 0;
do {
    console.log(`i=${i}`)
    i++
} while (i < 10)
console.log(`最后i=${i}`)

  for循环

for (var i = 0; i < 10; i++) {
    console.log(`i=${i}`)
    
}
console.log(`最后i=${i}`)

  关键字break

var sum = 0;
var i = 0;
while (sum < 100) {
    sum += i;
    i++
}
console.log(`sum=${sum}`)

var sum = 0;
var i = 0;
while (true) {
    // 如果sum大于100,跳出循环
    if (sum > 100) break;
    sum += i;
    i++
}
console.log(`sum=${sum}`)

  关键字continue

for (var i = 0; i < 10; i++) {
    // 如果i为偶数,执行下一次循环
    if (i % 2 === 0) continue;
    console.log(`i=${i}`)
    
}
console.log(`最后i=${i}`)

 

10、数组

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!