javascript 基本语法,变量,运算符【知识点整理】

JavaScript的基本语法和变量

变量声明与变量赋值的方法:

var a = 5;
var a = 5;var b = 4;
var a = 3, b = 2;
var a,b,c = 5;
var a = b = c = 1;

变量的命名规范

  • 首字符:英文和下划线
  • 组成:英文数字下划线
  • 禁忌:关键字、保留字
img

Unicode

在HTML中,Unicode字符可以通过 &#xNUM;&#NUM; 实体来使用,其中NUM代表字符的Unicode编码或ASCll编码。

JS 数据类型

引用数据类型和基本数据类型区别:

基本数据类型引用数据类型
存储位置是不可变的,直接存储在内存中的 栈(stack)上是可变的,它们存储在内存中的(heap)上,而变量存储的是对象的引用(地址)在栈上。
传递方式基本类型的值是按值传递引用类型的值是按引用传递的。
内存占用基本类型的值通常占用较少的内存引用类型的值通常占用更多的内存

JavaScript 是一种动态类型语言,它支持多种数据类型。以下是 JavaScript 中的一些基本数据类型:

Undefined(未定义):

变量被声明了,但没有被赋值时,其值就是 undefined 。

  • 未赋值的变量: 如果一个变量被声明了但没有被赋值,那么它的值就是 undefined

    let myVar;
    console.log(myVar); // 输出: undefined
    
  • 函数没有返回值: 如果一个函数没有明确的返回语句,或者没有被调用 return 语句,那么它会默认返回 undefined

    function myFunction() {
        // 没有返回语句
    }
    console.log(myFunction()); // 输出: undefined
    
  • 对象属性不存在: 尝试访问对象上不存在的属性会得到 undefined

    let obj = { name: "Kimi" };
    console.log(obj.age); // 输出: undefined
    
  • 函数参数未传值: 如果调用函数时没有传入足够的参数,那么未传入的参数的值将是 undefined

    function greet(name) {
        console.log(name);
    }
    greet(); // 输出: undefined
    
  • undefined 的类型undefined 是一个原始类型,它有自己的类型 undefined

    typeof undefined; // 输出: "undefined"
    

    与 null 的区别: undefined 和 null 都是表示“没有值”的特殊值,但它们是不同的。 undefined 表示变量声明了但还没有值,而 null 表示有意赋予变量一个“没有值”的值。

    检查 undefined: 通常使用 typeof 操作符来检查一个变量是否为 undefined。

    undefined 的不可变性: undefined是不可变的,这意味着你不能给 undefined赋值。

Null(空值):

表示一个空值,代表没有值。

在对象属性中的使用

  • 当你想要删除对象的某个属性时,可以将该属性设置为 null。(解除引用
  • 当你想要检查一个对象的属性是否被设置为 null 时,可以使用 if (object.property === null)

在数组中的使用

  • 当你想要从数组中移除某个元素时,可以将该元素设置为 null,但这并不会改变数组的长度。

在函数中的使用

  • 当函数没有返回值时,默认返回 undefined,而不是 null。但是,你可以在函数中明确返回 null

Boolean(布尔值):

只有两个值: true 和 false 。
以下值在转换为Boolean时被视为false

  • undefined

  • null

  • 0-00n(BigInt类型的0)

  • NaN

  • ''(空字符串)

  • false

  • 所有其他值都被视为true

    Boolean(undefined); // false
    Boolean(null);      // false
    Boolean(0);         // false
    Boolean('');        // false
    Boolean('Hello');   // true
    Boolean({});        // true
    Boolean(null == undefined)    //true
    

Number(数字):

表示整数或浮点数。

  • 转换函数
    JavaScript提供了parseIntparseFloat函数来将字符串转换为数字,并且可以指定进制。

  • parseInt(string, radix):将字符串转换为整数。radix参数是基数,如果省略,默认为10。如果字符串以0x0X开头,radix会被设置为16。

  • parseFloat(string):将字符串转换为浮点数。这个函数不使用radix参数。

  • num.toString([radix]):将数转换成对应的进制的值。

    let decimalFromHex = parseInt('1A', 16); // 26
    let decimalFromOctal = parseInt('15', 8); // 13
    let decimalFromBinary = parseInt('101', 2); // 5
    let float = parseFloat('3.14'); // 3.14
    
    let decimalNumber = 15;
    // 转换为二进制字符串
    let binaryString = decimalNumber.toString(2);
    console.log(binaryString); // 输出: "1111"
    

BigInt(大整数):

表示大于 2^53 - 1 的整数。

String(字符串):

表示文本数据,可以是字母、数字、下划线、特殊字符等的序列。

转义序列

\r:回车符\0:空字符(null character)
\t:制表符(水平)\':单引号
\b:退格符\":双引号
\f:换页符\\:反斜杠
\v:垂直制表符\n:换行符
\uXXXX:Unicode字符,其中XXXX是四位十六进制数\xXX:ASCII字符,其中XX是两位十六进制数

Symbol(符号)(ES6 新增):

一种唯一的、不可变的数据类型,常用作对象属性的键。

Object(对象):

由键值对组成,键是字符串,值可以是任意类型。

对象的创建: 1. 见面量 2.构造器方法

var dog = new Object();
        dog.hair = "red";
        dog.leg = "short";
        dog.eye = "blue";
        console.log(dog);

        var cat = {
            "name":"mimi",
            "age":12,
            "sex":"女"
        };
        console.log(cat);
        console.log(cat.name);
//构造函数方法

function Person(firstName, lastName, age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
    this.greet = function() {
        console.log("Hello, " + this.firstName + " " + this.lastName);
    };
}

let person = new Person("John", "Doe", 30);

面试题

let a = {};
      let b = {key:"b"};
      let c = {key:"c"};

      a[b] = 123;
      a[c] = 345;

      console.log(a);   // {[object Object]: 345}
      console.log(a[b],a[b] === a[c]);    // 345 true

在这里插入图片描述

Array(数组):

一种特殊的对象,用于存储有序的值序列。
示例: let numbers = [1, 2, 3, 4, 5];

Function(函数):

在 JavaScript 中,函数也是对象,因此它们可以像任何其他对象一样被操作。

JS 运算符

隐式转换的规则:

  1. 如果一个操作数是布尔值,那么在比较相等性之前 会将其转换成Number类型 true == 1

  2. 如果一个操作数是字符串 另一个操作数是 数值,比较时字符串会转换成数值 ,如果是一个不合法的数值 结果就是NaN ,比较式如果一个操作数是NaN,会无视规则,直接返回false

  3. null == null 无视规则 直接返回 true

  4. undefined == undefined 无视规则 直接返回 true

  5. null== undefined 无视规则 直接返回 true

  6. NaN== NaN无视规则 直接返回 false

  7. 如果一个操作数是对象另一个操作数不是对象就会调用对象的tostring方法用得到的基本值按照之前的规则去进行比较

  8. 如果两个操作数都是对象则去比较他们是否是同一个对象 也就是引用地址是否是相同的 如果不是相同的那么就会返回false 反之就是 true

对象和空数组的toString方法:

console.log({}.toString());   //[object Object]
console.log([].toString());    //

    console.log([] == 0);     //true    Number([].toString()) == 0
    console.log(![] == 0);    //true    Number(!Boolean([])) == 0

    console.log([] == ![]);   //true    Number([].toString()) == Number(!Boolean([]))
    console.log([] == []);   //false   引用类型,比较的是引用地址

    console.log({} == !{});   //false    NaN = Number({}.toString()) == !Boolean({})
    console.log({} == {});    //false

算术运算符

  • +:加法。例如,5 + 3 结果为 8
  • -:减法。例如,5 - 3 结果为 2
  • *:乘法。例如,5 * 3 结果为 15/:除法。例如,5 / 3 结果为 1.666...
  • %:取模(求余数)。例如,5 % 3 结果为 2
  • **:指数(ES6 新增)。例如,2 ** 3 结果为 8

赋值运算符

  • =:赋值。例如,let a = 5;
  • +=:加法赋值。例如,a += 3 等同于 a = a + 3
  • -=:减法赋值。
  • *=:乘法赋值。
  • /=:除法赋值。
  • %=:取模赋值。
  • **=:指数赋值(ES6 新增)。

比较运算符

  • ==:等于。比较两个值是否相等,类型可以不同。
  • ===:严格等于。比较两个值是否相等,且类型也必须相同。
  • !=:不等于。
  • !==:严格不等于。
  • >:大于。
  • <:小于。
  • >=:大于等于。
  • <=:小于等于。

逻辑运算符

  • &&:逻辑与。两个操作数都为真时,结果为真。
  • ||:逻辑或。两个操作数中至少有一个为真时,结果为真。
  • !:逻辑非。反转操作数的布尔值。

位运算符(操作的二进制

  • &:按位与。
  • |:按位或。
  • ^:按位异或。异为1,同为0
  • ~:按位非。
  • <<:左移。乘2n
  • >>:右移(有符号)。除2n
  • >>>:右移(无符号)。

字符串运算符

  • +:字符串连接。例如,'Hello, ' + 'world!' 结果为 'Hello, world!'

其他运算符(一元运算符)

  • ++--
  • typeof:返回操作数的类型。例如,typeof 5 结果为 'number'
  • instanceof检查一个操作数是否是另一个操作数的实例。例如,new Date() instanceof Date 结果为 true
  • in:检查一个属性是否存在于对象中。例如,'length' in 'Hello' 结果为 true
  • delete:删除对象的属性或没用var声明的对象。例如,delete obj.propertyName
  • void:执行表达式但不返回任何值。例如,void 0 等同于 undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值