javascript简介(变量,数据类型)

257 阅读7分钟

js是什么?

js全称javascript,是一种弱类型,直译型的脚本语言,需要依赖其他程序
弱类型:语法要求不严格,比如可以在一行语句结束时不写分号。数据类型分类相对其他语言没有那么严格。
直译型:直接翻译。

js能干什么

加强页面的动画效果
js接受后端传来的数据
js给后端传数据
js最早是为了解决表单验证的问题

js的三种引入方式

  1. 内部样式 <script>内部js代码</script>
  2. 外部样式 <script src="路径"></script>
  3. 行内样式

script三种输出方式

js引入与css不同的是,css写在前面,表示的是HTML找css,但是js的script标签是写在最后面
弹窗alert();数字;字符串,字符串必须加引号,加了引号的都是字符串;布尔值,true/flase 注意:引号不分单引和双引
可以识别空格,数字可以不打引号,但非数字必须打引号,单双都可以。布尔值不打引号。弹窗不在文档中所以不识别便签,可以识别空格
文档写入write: document.write();只有这种方式识别便签。documnet.write('<h1>hi</h1>');
console控制台输出: 语法:console.log(); 可以识别空格,用户看不到,主要用于代码测试;

console.log(666);//蓝色的数字
console.log('666');//黑色的字符串

js报错的简单BUG

js报错以后,后面的代码都不会执行

console.log(hehe);  //hehe is not defined 没有被定义
consol.log(888);   //consol is not defined 
console.logo(999); //is not a function   logo不是函数
console.log(888');  //invalid无效的    //mising) 右括号缺失

js的变量

变量:会改变的值
常量:不会改变的值
声明变量的方式: var
交换两个变量的值:需要声明一个中间变量;

var x ; 
 x = 1 ; // 赋值    
 console.log(x); //输出值为数字  2    变量不能加引号
 x = 2 ;         
 console.log(x); 
 x = 3 ;         
 console.log(x);
 x = 'haha' ;    
 console.log(x)// 输出值为 字符串 haha
 x = true ;      
console.log(x);  //输出值为 布尔类型  true

变量的声明规则

变量的命名要求(底线)

  1. 只能是数字,字母,下划线以及$
  2. 数字不能开头
  3. 不能使用关键字和保留字
    保留字:js将来可能定义为关键字的单词
    关键字:js当中正在使用的,具有特殊意义的单词

变量的命名规范(建议)

  1. 不用拼音
  2. 建议使用驼峰命名法或者组合命名
  3. 命名尽量做到见名知意 例如:小驼峰 var userName 大驼峰 var UserName(目前不要使用)

变量输出时需要注意什么

  1. 变量输出时不能加引号
  2. 可以写多个参数,但是弹窗alert只能有一个参数

数据类型

  1. 基本数据类型:数字+字符串+布尔值+null+undefined
  2. 引用数据类型 基本数据类型的判断方法 typeof
var x = 1 ;                      // js // 其他语言

console.log(typeof x);          // number 数字 // int                       
 var y = 1.2 ;                                 
 console.log(typeof y);          // number // float                         
 var user_name = 'yy' ;                         
console.log(typeof user_name);    // string // char 

 var bool = true ;                             
 console.log(typeof bool); // boolean                                                       
 var a ;                                          
 console.log(typeof a); // undefined 这种数据类型只有js有  
 var b = null ;                                  
 console.log(typeof b); // object 空对象

数据类型之间的转换

把其他类型转换成字符串

  • 把数字变成字符串
  • 把布尔值转字符串
  • 把null转字符串 'null'
  • 把undefined转字符串 'undefined'
       // 字符串类型
        var user_name = "cxl";
        console.log(user_name);  //输出  cxl
        console.log(typeof user_name) //typeof    显示类型  string
        // 数字类型
        var num = 123;
        console.log(num);    //输出 数字 123
        console.log(typeof num);    //number
        // 强制将数字类型转换为字符串类型    number----string
        var str1 = String(num);
        console.log(str1);   // 输出 字符串123
        console.log(typeof str1);   //显示类型  string

        // 布尔类型

        var bool = true;
        console.log(bool);     //输出布尔值 true
        console.log(typeof bool)     //  boolean
            // 强制将布尔类型转换为字符串类型    boolean----string
        var str2 = String(bool);    
        console.log(str2);         //字符串true
        console.log(typeof str2);  //显示类型   string
        //null
        var a_1 = null;
        console.log(a_1);   //输出null值
        console.log(typeof a_1);  //显示类型 object
        // 强制将null转换为字符串类型    object----string
        var str3 = String(a_1);   
        console.log(str3);     //输出字符串null
        console.log(typeof str3);   //显示类型 string

        //undefined
        var a_2 = undefined;
        console.log(a_2);    //undefined
        console.log(typeof a_2);  //undefined
        // 强制将undefined转换为字符串类型    undefined----string
        var str4 = String(a_2);
        console.log(str4);   // 输出字符串undefined
        console.log(typeof str4);  //string
        

把其他类型转换成数字类型

  • 字符串转数字
  • 字符串都是数字 直接转数字
  • 字符串包含非数字 NaN
  • 空字符串和空格字符串都转为0
       // 数字类型
        var x = 123;
        console.log(x); //值为数字123
        console.log(typeof x);
        //将字符串string类型转换成数字number类型
        console.log(Number("123")); //值为数字123
        console.log(typeof Number("123"));
        console.log(Number("sadadad")) //值为NaN  意思是not a number
            //     字符串转数字
            //        字符串都是数字   直接转数字
            //        字符串包含非数字  NaN
            //         空字符串和空格字符串都转为0
        console.log(Number("123d"))
        console.log(Number(" ")) // 空格
        console.log(Number("")) //空字符串
            //将布尔类型Boolean转换成数字number类型
        console.log(Number(true)) //布尔值true转换数字类型值为1
        console.log(Number(false)) //布尔值false转换数字类型值为0
            //将null转换成数字number类型
        console.log(Number(null)) // 值为0
        console.log(Number(undefined)) //值为NaN

将其他类型转换成布尔类型

  • 数字转布尔值 0和NaN为false,其他数字都是true
  • 字符串转布尔值
  • 字符串有东西就是true
  • 空字符串 false
  • null转布尔值 false
  • undefined转布尔值 false
      //    数字转布尔值     0和NaN为false,其他数字都是true
        //    字符串转布尔值
        //      字符串有东西就是true  
        //      空字符串 false
        //    null转布尔值    false
        //    undefined转布尔值   false
        //布尔类型
        var x = true;
        console.log(x); //值为true
        console.log(typeof x); //显示类型为Boolean
        // 将字符串转换成布尔类型
        console.log(Boolean("weuqwe")) //值为true
        console.log(Boolean("")) //值为false
        console.log(Boolean(123)) //值为true
        console.log(Boolean(0)) //值为false
        console.log(Boolean(NaN)) //值为false
        console.log(Boolean(null)) //值为false
        console.log(Boolean(undefined)) //值为false

js运算符

  1. 算数运算符
  2. 逻辑运算符
  3. 关系运算符
  4. 赋值运算符
  5. 比较运算符

算数运算符

   console.log(1 + 2); //加法运算
        console.log(2 - 1); //减法运算
        console.log(2 * 2); //乘法运算
        console.log(4 / 2); //除法运算
        console.log(4 % 3); //取余运算  取模
        //数学中不能把0作为除数,但是js可以
        console.log(1 / 0); //值为  Infinity   无穷大

加号的两种用法

  • 遇到字符串就是拼接的意思
  • 没有字符串就是 求和的意思
        console.log(1 / 0); //值为  Infinity   无穷大
        console.log("hello" + "world") //字符串的拼接
        console.log(1 + 2);
        console.log(1 + "2") //字符串12 拼接
        console.log(true + false) //值为1   隐式转换成数字类型

算数的其他运算

 // 只有数字可以做减法,乘法,除法,求模运算
        var x = 'hi';
        var y = 2;
        console.log(x * y); // NaN
        console.log(null + 2); // 2
        console.log(undefined + 2); // NaN
        console.log(null + undefined); // NaN
        console.log(null + true); // 1

隐式运算

其他转字符串

  • 强制转换 String()
  • 用加号拼接空字符串 其他类型转数字
  • 强制转化 Number()
  • -0 ,/1 , *1 , %更大的数
  // 其他转字符串
        //    强制转换  String()
        //    + ''
        // 其他类型转数字
        //   强制转化  Number()
        //   -0  /1  *1  %更大的数
        var x = 1;
        var str = x + '';
        console.log(str); //将数字类型转换成字符串类型
        console.log(true + ''); //将布尔类型转换成字符串类型

        var x = '123';
        // x = x - 0 ;
        // x = x / 1 ;
        // x = x * 1 ;
        x = x % 1000000000000;
        console.log(x);
        // 变量在使用的过程中,是值在做计算,不是变量在做计算
        // 变量只有通过赋值才会改变
        var m = '23';
        var n = m * 1; // 看到的是m*1  实际上程序是先找到m对应的值,再做计算  '23'*1
        console.log(m); // '23'
        console.log(n); // 23

比较运算

比较运算符 得到布尔值

  • >       大于
    
  • <       小于
    
  • >=     大于或等于
    
  • <=     小于或等于    
    
  • ==      值相等
    
  • ===     绝对等于,值和类型必须都相等
    
  • != 值不相等 == 反义词
  • !== 值或者数据类型不相等 === 反义词
  • 等于 == === 注意: js没有连等式,通常用逻辑运算来表示 关于等号
  • = 赋值
  • == 判断值相等
  • === 值和数据类型都要相等
 console.log(3 >= 2);
        console.log(3 <= 3); // true
        console.log(3 >= 3); // true
        console.log(3 == 3); // true
        console.log(3 == '3'); // true
        console.log(3 === '3'); // false
        console.log(2 !== '3'); // true
        console.log(3 !== '3'); // true

逻辑运算

  • 与 并且 多个条件同时满足 &&
  • 或 只要有一个条件满足 ||
  • 非 取反 ! 短路
  • 逻辑与运算中 见假即假 见假就短路了
  • 逻辑或运算中 见真即真 见真就短路了
//0 < 10 < 20 改变成js               
console.log(10 > 0 && 10 < 20); // true      
console.log(10 > 0 || 10 > 20); // true 

赋值运算

    <script>
        // = 
        // += 
        // -=
        // *=
        // /=
        // %=
        var x = 1;
        // x = x + 1 ;
        x += 1;
        var y = 2;
        y *= 2; // y = y * 2 ;
        console.log(y); // 4
    </script>

自增运算(一个有坑的位置)

  • ++在后面,先赋值,再自增
    var y = x++ ;
         //  y = x = 1 ;
         //  x = x + 1 = 2 ;
    console.log(y);  // 1
    console.log(x);  // 2
  • ++在前面,先自增再赋值,
      var n = ++ m ;
         //  m = m + 1 ;
         //  n = m
      console.log(n);  // 2
      console.log(m);  // 2