JavaScript基础

71次阅读

共计 622 个字符,预计需要花费 2 分钟才能阅读完成。

最新的 ECMAScript 标准定义了 7 种数据类型:。

  • Boolean:布尔类型,值为 true 或 false
  • String:字符串类型,值要使用双引号或者单引号括起来
  • Number:64 位双精度浮点型的数字数据类型
  • Null:null 值一直是一个被讨论点,通常来说,表示一个不存在或者无效 object 或者地址引用。语言实现中空引用的含义各不相同。
  • Undefined:一个原始值自动分配给刚刚声明的变量或没有实际参数的形式参数。
  • Symbol:ECMAScript 6 新定义
  • Object:指包含了数据和处理数据指令的数据结构(在 JavaScript 中除了基本数据类型以外的都是对象,数据是对象,函数是对象,正则表达式是对象)

以上 7 种数据类型中 Object 是引用数据类型,那么基本数据类型和引用类型的区别是啥呢?

基本数据类型是存放在栈中,他们存储的是对应的值,每个基本类型的在栈中的存储空间的大小是确定的

var x = 10
var y = x
    y = 20
console.log(x) // 10
console.log(y) // 20

栈内存中初始存放的值

变量
x 10

栈内存中添加 y,并把 x 的值赋值给 y

变量
x 10
y 10

修改 y 的值

变量
x 10
y 20

引用数据类型是存放在堆内存中的对象,在栈中其实是保存的是指向对内存的一个地址,通过这个地址来寻找对象

var animal = new Object()
var dog = animal
dog.bark = '汪汪'
console.log(animal.bark)

正文完
 0

JavaScript基础

71次阅读

共计 2949 个字符,预计需要花费 8 分钟才能阅读完成。

标识符:
所谓的标识符, 就是指变量、函数、属性的名字,或者函数的参数。标识符主要有以下规则:

首字符必须是字母、下划线_或者美元符 $
其他字符可以是字母、下划线_、美元符 $ 或者数字

标识符的命名遵循驼峰命名,即 myCar
用 var 操作符定义的变量将成为定义该变量的作用域中的局部变量. 也就是说, 如果在函数中使用 var 定义一个变量, 那么这个变量在函数退出后就会被销毁, 如:
function test() {
var message = “hi”;
}
test();
console.log(message); // 错误

a = 5 // 省略 var 操作符, 创建的是一个全局变量
javascript 数据类型:
基本数据类型: number, string, boolean, undefined, symbol, null
复杂数据类型: object (三种引用类型: function, arrary, object)
特殊值: NaN, undefined, null
NaN 有以下两个特点:
1. 任何涉及 NaN 的操作都会返回 NaN, 包括 NaN/0 // NaN.
2.NaN 与任何值都不相等, 包括 NaN 本身,NaN==NaN // false.
鉴于上面两点, 判断一个变量是否是 NaN 需要使用 javascript 提供的 isNaN()方法, 例: NaN.isNaN() // true
undefined 声明但是没有初始化的变量的值即为 undefined, 可以理解为此处应该有一个值, 但是实际上没有, 我们给它一个默认值 undefined
// 声明的变量
var a; // 相当于 var a=undefined;
console.log(typeof a); //undefiend

// 注意一下未声明的变量会直接报错的
console.log(b); //! 报错 b is not defined
null 是表示缺少的标识,指示变量未指向任何对象,如果定义的变量准备在将来用于保存对象时,那么最好将变量初始化为 null
typeof 操作符返回一个字符串,表示未经计算的操作数的类型
let s = Symbol
typeof 5 ———> number
typeof NaN ——-> number
typeof ‘a’ ——-> string
typeof true ——> boolean
typeof undefined -> undefined
typeof s ———> symbol

let fn = function() {}
typeof null ——> object
typeof [] ——–> object
typeof {} ——–> object
typeof fn ——–> function
instanceof 运算符用于测试构造函数的 prototype 属性是否出现在对象的原型链中的任何位置
基本类型使用字面量赋值, 使用 instanceof 并不能判断其变量类型, 因为字面量就是我们所见到的字符, 没有调用构造函数, 也就不能在原型上找到
let a = 5
a instanceof Number // false

let b = false
b instanceof Boolean // false

let c = Symbol
c instanceof Symbol // false

但是复杂类型使用字面量赋值时, 往往能判断其变量类型, 这是因为在 js 中根本不存在真正的空对象,即使是最简单的 {} 对象也会包含从 Object.prototype 继承而来的属性和方法
let obj = {}
obj instanceof Object // true
[] instanceof Array // true

// 注意
null instanceof Object // false
javascript 常用方法:
# 1.Number
number.isNaN() // 判断是否是 NaN
number.toFixed(2) // 保留小数点后两位
number.toString() // 将数字转换成字符串

Number 可以配合 Math 对象来使用
Math.random() // 随机取 0 - 1 的数
Math.abs(number) // 取绝对值
Math.round(number) // 四舍五入
Math.floor(number) // 向下取整
Math.ceil(number) // 向上取整

# 2.String
// 后续补全
# 3.Array
// 后续补全
javascript 语法:
==/!= 先转换再比较(强制转型) ===/!== 仅比较不转换
null == undefined; //true 它们是类似的值
null === undefined; //false 它们是不同类型的值
//var max = (num1>num2) ? num1 : num2 // 条件操作符又称三元运算符
// 当判断一个范围时请使用 if 语句
var scroe = 80
if(scroe >= 90) {
console.log(“ 成绩为优 ”);
}else if(scroe >= 80) {
console.log(“ 成绩为良 ”)
}else if(scroe >= 60) {
console.log(“ 成绩为及格 ”)
}else {
console.log(“ 成绩为不及格 ”);
}

// 在对比有限个值时, 值不能太多, 一般在 1 - 4 之间, 使用 switch 语句
switch(m) {
case x:
// 语句
break;
case y:
// 语句
break;
default:
// 语句
break;
}

// 循环次数已知, 选择 for 循环
for(初始化条件表达式; 条件表达式; 条件改变表达式) {
// 循环体
}

// 循环次数未知, 但是循环结束条件已知选择 while 语句
while(条件表达式) {
// 循环体
}

// 循环体至少执行一次时, 选择 do while 语句 例如: 要先考试才能知道是否及格
do{
// 循环体
}while(条件表达式)

var score = 48;
do {
console.log(‘ 没及格, 需要再来考试!’);
score += 15;
} while (score < 60);

for-in 语句是一种精准的迭代语句, 可以用来枚举对象的属性, 但是是无序的
var person = {
name: “ 张三 ”,
age: 20
}

for (var item in obj) {
console.log(item);
console.log(obj[item]);
}

//break 直接跳出循环
var num = 0;
for (var i = 1; i < 10; i++) {
if (i % 5 == 0) {
break;
}
num++;
}
console.log(num); //4 当 i = 4 时,num=4, 再执行循环 i =5, 跳出循环, 下面的 num++ 并没有执行, 此时 num 还是 4;

//continue 跳出本次循环, 继续执行下面的循环
var num = 0;
for (var i = 1; i < 10; i++) {
if (i % 5 == 0) {
continue;
}
num++;
}
console.log(num); // 当 i = 4 和 9 时, 跳过了 num++, 循环完成时 num=8;

// 函数执行完之后会立即销毁!!!
function sum(num1, num2) {
return num1 + num2; // 函数是否需要返回值是要看我们是否需要用到函数的返回值
}

function hello() {// 函数在执行完 return 之后会立即退出
return;
console.log(‘ 你好, 世界!’); // 这段语句不会执行
}

正文完
 0