Js特点,数据类型及转换

Posted liu_kaiyao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Js特点,数据类型及转换相关的知识,希望对你有一定的参考价值。

特点

1) 不仅可以运行在浏览器,也可以运行在服务器【nodejs环境】
    浏览器
        动画、事件、表单验证
    服务器
        操作数据库、网络
        mysql
  
2) 可以减轻服务器的压力
    可以通过表单验证来约束用户输入的内容,如果内容格式与表单验证的规则不一致,则不会发送请求
3) 解释型语言
    c -> 编译 -> 运行
    js -> 运行
    所有的主流浏览器都内置了js的解析器
4) 弱类型语言
    变量的数据类型可以随时的变化
5) 浏览器是从上往下解析js代码

1) js的使用方式

1. 内部引用
    <script> </script>
2. 外部引用
    <script src=""></script>

2) 变量

0. 注释
    单行注释 //
    多行注释 /* */
1. 定义
    是一个容器,可以存放任意数据类型的值
2. 声明
    使用关键字var
    var a;

    关键字
        js中具有特殊作用的变量
    保留字
        将来有可能成为关键字的变量
    注意:
        1、变量可以是数字、字母、下划线、$组成
        2、不能是数字、下划线开始
        3、不能使用关键字和保留字
        4、多个变量声明时可以只写一个var
            var a,b,c;
        5、变量的命名应该是驼峰命名法
            var userName = \'\';
            var userPassword = \'\';
3. 初始化
    var a;   a = 1;
    var b;   b = [];
    变量的声明和初始化同时进行
    var a = 1;

3) 数据类型

  1. 基本数据类型

       数字类型 number
           整数
               var a = 1;
           浮点数
               var b = 1.2;
           非数字 NaN not a number
               var c = 10/\'hello\'; // NaN
              (isNaN 检测当前变量是否是非数字,如果不是数字,则返回true)
               console.log(isNaN(c)); // true
    
       字符串类型 string
           \'\' 或 ""
           var a = \'\'; // 空字符串
           var b = \'hello js\'; // hello js
    
       布尔类型 boolean
           true/false,一般用于条件的判断
           var a = true; // true
    
       null
           空对象
           var obj = null;
           obj = {name:\'tom\',age:23};
    
       undefined
           变量声明未初始化
    
       数据类型的检测,使用typeof
           var str = \'5\';
           var bol = true;
           console.log(\'str:\',typeof(str)); // string
           console.log(\'bol:\',typeof(bol)); // boolean
           console.log(\'null:\',typeof(null)); // object
           console.log(\'undefined:\',typeof(undefined)); // undefined
           console.log(\'arr:\',typeof([])); // object
           可以正确检测除了null之外的所有基本数据类型
    
  2. 引用数据类型

       数组 array
           var a = []; // 空数组
           var b = [1,\'1\',null,function(){}]
       对象 object
           var a = {};
       函数 function
           var a = function(){}
    
       es6 原始数据类型 6 种,symbol
    

4) 内存图

基本数据类型保存在栈区,引用数据类型保存在堆区(引用数据类型在栈区保存的是一个指针)
 值传递
    var a = 1;
    var b = a;
    b++;
    console.log(a); // 1
引用传递
    var c = {
        age:12
    };
    var d = c;
    d.age++;
    console.log(c.age); // 13

5)基本数据类型的转换

  1. 将其他数据类型转换为number

       1. 将字符串转换为number => +、-、 Number()
           var a = \'hello\';
           var b = \'\';
           console.log(+a); // NaN
           console.log(Number(a)); // NaN
           console.log(Number(b)); // 0
    
       2. 将布尔转换为number
           var a = true;
           +a; // 1
           var b = false;
           +b; // 0
    
       3. 将null、undefined转换为number
           var a = null;
           +a; // 0
           var b = undefined;
           +b; // NaN
           
       4.parseInt()  ---将字符串中有效整数转换为Number
           a=parseInt("123aa") //123
           a="123e234"//123
           a="e123"//NaN
           
       5.parseFloat()
           对非string用parseInt(),parseFloat(),会先将其转换为string
           a=true;    a=parseInt(a) //NaN
       
  2. 将其他数据类型转换为string

       String()  toString()
       1. 将数字类型转换为string
           var a = 1;
           String(a); // \'1\'
           a.toString(); // \'1\'
       2. 将布尔类型转换为string
       3. 将null、undefined转换为string  null ->null /underfined->不可转
    

    3.将其他数据类型转换为boolean

       !! Boolean()
    1. 将数字类型转换为boolean --只有0,NaN是F
       var a = 0;
       !!a; // false
    
       var b = 1/-11;
       !!b; // true
    
       var c = NaN;
       !!c; // false
    
    2. 将字符串类型转换为boolean --空字符串为F
       var a = \'\';
       !!a; // false
    
       var b = \'hello\';
       !!b; // true
    
    3. 将null、undefined转换为boolean--都F
       var a = null;
       !!a; // false
    
       var b = undefined;
       !!b; // false
    4. 对象 --True

    6.包装类
    String(),Number(),Boolean()
    可将基本数据类型转换为对象

    var num = new Number(3);   //num是number对象
    console.log(typeof(num)); //object
    num.a = \'aaa\';  //对象可添加属性
    !对象间比较false
    

    方法和属性只能添加给对象
    当基本数据类型调用属性和方法时,浏览器用包装类将其转换为对象再调用,之后转回基本数据类型

     var a = 11;
     a = a.toString();  //调用number对象的toString
    

1、引号使用规则

 1) 如果外层使用了双引号,内层只能使用单引号
    "{\'name\':\'tom\'}"
 2) 如果外层使用了单引号,内层只能使用双引号
    \'{"name":"tom"}\'
 错误格式:
    "{"name":"tom"}"
    \'{\'name\':\'tom\'}\'

2、构造函数和普通函数的区别

普通函数:
    function sayName(){}
    sayName
构造函数(首字母大写)
    Number

内置函数 
console.log()
Number()
Boolean()
String()
parseInt()
parseFloat()
构造函数
Array()  Object()

以上是关于Js特点,数据类型及转换的主要内容,如果未能解决你的问题,请参考以下文章

JS的数据类型判断函数数组对象结构处理日期转换函数,浏览器类型判断函数合集

js的数据类型及类型转换

js运算符及数据类型转换

在代码片段中包含类型转换

JS的数据类型及转换(还是基础的东西)

js数据类型及方法