JS基础知识

一、进入编程

代码:一个程序,通常被称为源代码或代码,是一组告诉计算机要执行什么任务的特殊指令。
语句:在一门计算机语言中,一组单词,数字和执行一种具体任务的操作符构成了一个语句。
表达式:语句是由一个或多个表达式组成的。一个表达式是一个引用,指向变量或值。或者一组用操作符组合的变量或值。
操作符:操作符是我们如何在变量和值上实施操作的方式。
类型:在编程术语中值的不同的表达形式称为 类型
类型转换:类型转换分为强制转换和隐式转换
强制转换是指使用JS方法将一个类型转换成另一个类型
隐式转换:在比较两个不同类型的值的时候,需要隐含的强制转换。

var a = "42";
var b = Number(a); //强制转换
a; // "42"
b; // 42 -- 数字!

"99.99" == 99.99  //相等  其中包含隐含的强制转换 字符串转换成了number 即 99.99 ==99.99
"99.99" === 99.99  //不相等

当一个非boolean值被强制转换为一个boolean时,它是变成true还是false。
在 JavaScript 中“falsy”的明确列表如下:

  • “” (空字符串)
  • 0, -0, NaN (非法的number)
  • null, undefined
  • false
    任何不在这个“falsy”列表中的值都是“truthy”。这是其中的一些例子:
  • “hello”
  • 42
  • true
  • [], [1,2,3] (数组)
  • {},{a:“123”} 对象
  • function foo() { } 函数

变量:将一个值赋予一个符号容器,称为一个 变量 。
函数:一个函数一般是来说是一段被命名的代码,它可以使用名称来被调用,而每次调用它内部的代码就会运行。

二、进入JavaScript

2.1 值与类型

JavaScript可用的内建类型:

  • string
  • number
  • boolean
  • null和undefined
  • object
  • symbol (ES6新增类型)
    JavaScript提供了一个 typeof 操作符,可以检查一个值的类型:
var a;
typeof a; // "undefined"

a = "hello world";
typeof a; // "string"

a = 42;
typeof a; // "number"

a = true;
typeof a; // "boolean"

a = null;
typeof a; // "object" -- 奇怪的bug

a = undefined;
typeof a; // "undefined"

a = { b: "c" };
typeof a; // "object"

来自typeof的返回值总是六个(ES6 中是七个! —— “symbol”类型)字符串值之一。也就是,typeof “abc"返回"string”,不是string。
注意:只有值拥有类型,变量只是值的容器
警告: typeof null 返回一个 “object”,而不是返回 “null”, 这是JS中一直存在的一个bug ,但是看起来永远不会修复,网络上太多的代码依存于这个bug,因此修复它将会倒置更过bug。
注意a = undefined;明确的将a设置成undefined ,但是 var = a; typeof a 仍然返回undefined 。一个变量可以有好几总不同的方式得到undefined 值状态。 包括没有返回值的函数和使用 void 操作符。

2.2 对象

object 类型指的是一种复合值,可以设定属性,每个属性持有各自的任意类型的值。

var obj = {
  a: "hello world",
  b: 42,
  c: true,
};

obj.a; // "hello world"
obj.b; // 42
obj.c; // true

obj["a"]; // "hello world"
obj["b"]; // 42
obj["c"]; // true

在这里插入图片描述
属性可以使用点好标记法访问(例如:obj.a)和方括号标记法访问 (例如:obj[a]);
当通过方括号标记法访问时,这样的属性通常被称为
档你想访问一个属性/键,但名称被存储在另一个变量时可以用方括号标记法;

var obj = {
  a: "hello world",
  b: 42,
};

var b = "a";

obj[b]; // "hello world"
obj["b"]; // 42

2.3 数组

一个数组是一个 object ,他不使用特殊的带名称的属性/键 持有值,而是使用数字索引的位置。

注意:索引从 0 开始计数,在数组中使用0 作为第一个元素的索引。

在这里插入图片描述
因为数组是一种特殊的 对象,所以可以拥有属性,包括一个可以自动被更新的 length 属性。使用typeof判断数组,返回值为 “object”.

2.4 函数

函数也是一个 object 的子类型,是一个特殊的对象 typeof 返回 “function”; function 是一种主要类型,因此可以拥有属性。

function foo() {
  return 42;
}

foo.bar = "hello world";

typeof foo; // "function"
typeof foo(); // "number"
typeof foo.bar; // "string"

2.5 内建类型的方法

   内建类型和子类型拥有十分强大和有用的行为,它们作为属性和方法暴露出来。
var a = "hello world";
var b = 3.14159;

a.length; // 11
a.toUpperCase(); // "HELLO WORLD"
b.toFixed(4); // "3.1416"

使调用a.toUpperCase()成为可能的原因,要比这个值上存在这个方法的说法复杂一些。

简而言之,有一个String(S大写)对象包装器形式,通常被称为“原生类型”,与string基本类型配成一对儿;正是这个对象包装器的原型上定义了toUpperCase()方法。

当你通过引用一个属性或方法(例如,前一个代码段中的a.toUpperCase())将一个像"hello world"这样的基本类型值当做一个object来使用时,JS 自动地将这个值“封箱”为它对应的对象包装器(这个操作是隐藏在幕后的)。

一个string值可以被包装为一个String对象,一个number可以被包装为一个Number对象,而一个boolean可以被包装为一个Boolean对象。在大多数情况下,你不担心或者直接使用这些值的对象包装器形式 —— 在所有实际情况中首选基本类型值形式,而 JavaScript 会帮你搞定剩下的一切。

2.6 立即被调用的函数表达式(IIFE)

( function IIFE(){})():为立即执行它前面的函数表达式;因为IIFE是一个函数,而函数可以创建变量和作用域,以这样的风格使用一个IIFE经常被用于定义变量,而这些变量不会影响IIFE以外的代码。

var a = 42;

(function IIFE() {
  var a = 10;
  console.log(a); // 10
})();

console.log(a); // 42

var x = (function IIFE() {
  return 42;
})();

x; // 42
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值