JavaScript入门-js的变量以及运算

关于js变量

  • 变量,就是一个用来存储数据的容器
  • 一般来说,我们的变量都是可以得先声明,再使用,就像是一个东西先必须存在,才能看得见摸得着。然而在js里(es5),可以先使用,后声明。
    a = 100;
    var b =200;
    console.log(a,b)
    var a;
    输出结果为:100,200
ps:这样的语法在es5里是能够执行的,虽然它不符合我们的逻辑思维。在js里叫做,变量提升。
  • 如果在声明变量时,没有赋值,直接打印不会报错,因为它有一个默认的值,undefined,表示未定义的值。
  • 变量的类型:js是一种弱语言,变量声明时,它的数据类型不明确,只有在赋值的那一刻,变量的数据类型才确定。
  • 变量的重复定义:
        var a = 3
        var a = a-1;
        console.log(a)
        //输出结果为2
像这样的语法在Java,c等中,绝对报错,但是在es5中,叫做重复定义。这个逻辑也不符合正常,就好比出生,都是出生一次,没有说有出生两次三次的说法,因此这上面的几个不太符合逻辑的特点,我们知道就行,尽量避开就行。

JavaScript中的7种数据类型

口诀: 3 2 2

三种基本数据类型

  • number 数字类型。不区分小数,整数,浮点数,只要是个数,都归类为number类型。
    (ps:NaN表示非数字类型,就是除了数字意外的,叫做非数字,他是number的一个属性)
  • string 字符类型。这个不用多解释,var str = '';'和"都可以
    ps:建议不要使用new String('xxxx'),因为这个影响执行速度
  • Boolean 布尔类型 。 只有两个值,true/false,非真即假

两个引用数据类型

  • Object 对象类型。
    //1.    直接用{}创建对象
    var obj = {name:'rainbow',age=20,run : function(){
        console.log('i love runnning');
    }};
    //2.    用new关键字实例化一个对象
    var obj2 =  new Object();
    obj2.name = 'rainbow';
    obj2.age = 20;
    obj.say = function(){
        console.log('hello world')
    }
  • Array 数组类型
        //1.    直接用[]创建
        var arr = [];//空数组
        //2.    new
        var arr2= new Array();

ps:注意的是,js可以不用给数组一个初始长度,并且这个长度可读可写,但是不建议写,因为可能导致数据丢失

两种特殊数据类型

  • undefined
    未定义的数据类型
  • null
    值为null

typeof关键字

typeof就是用来检测一个变量的数据类型
使用方法:typeof 变量名(或者常量名)

赋值运算符

自增自减:a++,++a,a--,--a;
ps:++a 和 a++的区别:
如果单单是一条语句而言,两者并没有什么区别,就仅仅是一条语句而已,执行后,自己都加了1,但是在有赋值和其他复杂的运算时,就有区别了;

    e.g.
        var a = 8;
        ++a;
        var b = a++;
        var c = --b;
        console.log(a,b,c);
        //输出结果为a,b,c为10,8,8
b = ++a; 先自增,后赋值
b = a++; 先赋值,后自增

比较运算符

  1. ASCII的比较
    d > f false
    a > 2 false
    查阅ASCII表,记住几个常用的ASCII码值就行了。
  2. == !=
    比较的两边的值是否相等或者不相等,不同的数据类型也可以比较
  3. === !==
    === 首先比较两边的数据类型是否相等,不相等后面就不再比较了。如果同类型,那么就比较值是否相等。(推荐使用)
    !== 就是不全等,===的取反

逻辑运算符

与或非

            or      and     not
    逻辑运算 ||      &&       !
    位运算   |       &
    三目运算符  A<B?表达式1:表达式2; //true放回表达式1,否则为表达式2
    //表示真假的运算
                真      假
    布尔值      true    false
    数字        非0      0
    字符串      非空    null

短路与和短路或

口诀:
短路与 有0出0,全1为1
短路或 有1出1,全0为0
ps:注意,短路与和短路或在运算时,结果并不是返回true或者false布尔值,而是返回左边或右边具体的值。比如

        //短路与
        console.log(1 && 1);//1
        console.log(19 && 20);//20
        console.log(0 && 20);//0

        //短路或
        console.log( true || 1)//true
        console.log( '' || 1 )//1
        console.log( ' ' || 1 )//' '    空格不是空

字符串拼接

自动转换

    1.  number -> string
        console.log(1+2+'3')//输出:33 字符串类型

        console.log('1'+4+6+9) //1469

        console.log(10+8+'1'+4+6) //18146

    2.  string -> number
        console.log(1+2+'3'-4);//输出29,number类型

        console.log(true + 1);//3 number

        console.log(true - 1);//0 number

ps:如果字符串出现在最左边,那么后面的数字都会拼接。
   如果字符串出现在最右边,那么前面的数字都会相加,再拼接。

强制转换

首先我们需要理解一个知识,什么是包装类?
它其实就是把几种基本的数据类型(除了undefined和null),封装成一个类,并给这个类添加属性和方法。

实例化
    我们打印一下这个未实例化的Number,输出的是?
    console.log(Number);
    //结果:ƒ Number() { [native code] },是一个function

    //实例化后
    console.log(new Number(2));
    //结果:Number {2}
            __proto__: Number[[PrimitiveValue]]: 2

字符串转数字
    var a = 1;
    var b = '2';
    转换:
    b = Number(b);//这个时候就相当于调用了Number方法,返回一个number类型数据
    //a + b 等于 3,number类型

ps:如果b是含有数字之外的字符,那么无法正常转换,结果为NaN。

parseInt()
去掉小数点后面的数,转为整数。
如果是字符串,也可以转,但是得看情况:
    1.parseInt('12px'); // 结果为12
    2.parseInt('px12'); // 结果为NaN
parseFloat()
没啥用,和parseInt区别不大。虽然方法名以为是转为浮点数,但是实际效果不会带有小数点。
toString()
一般用于字符串的拼接,obj.toString(1+2+'3d')//33d
(0)

相关推荐

  • Nice!JavaScript基础语法知识都在这儿了

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star ⭐⭐⭐⭐⭐转载请注明出处!⭐⭐⭐⭐⭐ 链接:https:/ ...

  • 关于JS字面量及其容易忽略的12个小问题

    简要问题1:不能使用typeof判断一个null对象的数据类型问题2:用双等号判断两个一样的变量,可能返回false问题3:对于非十进制,如果超出了数值范围,则会报错问题4:JS浮点数并不精确,0.1 ...

  • JavaScript基本语法(全)

    JavaScript JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思) 脚本语言:不需要编译,运行过程中由 js 解释器( js 引擎)逐行 ...

  • JavaScript

    简介 JavaScript是一门动态弱类型的解释型编程语言.是可插入 HTML 页面的编程代码,插入 HTML 页面后,可由所有的现代浏览器执行.从而增强页面动态效果,实现页面与用户之间的实时动态的交 ...

  • JavaScript基础总结(一)

    值类型(基本类型):字符串(String).数字(Number).布尔(Boolean).对空(Null).未定义(Undefined).Symbol.注:Symbol 是 ES6 引入了一种新的原始 ...

  • 2021 年需要了解的 34 个 JavaScript 优化技巧

    前端试炼 前天 以下文章来源于掘金开发者社区 ,作者黄龙吐翠 掘金开发者社区掘金,一个帮助开发者成长的技术社区 原文地址:34 JavaScript Optimization Techniques t ...

  • 「学习笔记」JavaScript基础

    前言 最近一直在跟着黑马教程学习JavaScript内容,遂把这一阶段的学习内容整理成笔记,巩固所学知识,同时也会参考一些博客,书籍上的内容,查漏补缺,给自己充充电

  • JavaScript连载6-转化为Number和Boolean类型、运算符

    一.承接连载5 1.注意事项 对于非String使用parseInt()或parseFloat(),会先将其转换为String类型在进行操作. var s1 = false; var s2 = par ...

  • JavaScript(1) -- JS入门

    JavaScript(1) -- JS入门

  • JavaScript表达式和运算符 —— 基础语法(4)

    JavaScript基础语法(4) 运算符 运算符用于将一 个或者多个值变成结果值. 使用运算符的值称为操作数,运算符和操作数的组合称为表达式 JS中的运算符可以分成下面几类: 算术运算符 逻辑运算符 ...