js收官总概述

知识回顾-数据的表达1

1. 命令式编程(Imperative Programming)

核心思想:通过一系列明确的指令告诉计算机"如何做",详细描述每一步的操作过程。

特点

  • 关注控制流程和状态变化

  • 使用变量、赋值、循环、条件等基本结构

  • 程序状态是显式修改的

常见语言:C, C++, Java, Python, JavaScript

2. 声明式编程(Declarative Programming)

核心思想:描述"做什么"而非"如何做",关注问题的本质而非实现细节。

特点

  • 关注结果而非过程

  • 通常不包含显式的状态变化

  • 更接近问题领域的表述

常见语言

  • 函数式:Haskell, Lisp, Scala

  • 逻辑式:Prolog

  • 查询语言:SQL

  • 标记语言:HTML, CSS

JS数据表达 简易笔记

JS核心概念
  • JS是命令式编程语言 (不同于HTML/CSS),本质是处理数据
数据的3种表达方式
  1. 变量 - 存储数据的容器

  2. 字面量 - 直接写出的值(如数字、字符串)

  3. 表达式 - 可计算求值的式子

💡 程序中任何需要数据的位置,都可以使用以上任意一种形式

console.log(a * b)

关键术语
  • 标识符:程序中可以自行命名的位置(如变量名、函数名)

var maxWidth -> 驼峰命名法

表达式和语句有什么区别

表达式 + 分号 = 语句

练习:

// 1.$ 可以

// 2. _ 可以

// 3. 1$ not allowed

// 4. list-style not allowed (横杠不认识) 重点

// 5. list_style aloowed

// 6. list style not allowed

// 7. $$ 可以

// 8. $emit 可以

// 9. var 不行

报错

console.log('邓哥全名"邓旭明"\n他为IT教育事业做出了\'不可磨灭\'的贡献');

用到单引号不能包住单引号,然后用到转义字符

知识回顾-数据的表达2

练习

var deng = {

name:'邓哥',//name:name也行

age:60,//age:age也行

sex:'男'//sex:sex也行

}

deng.name = 'laodeng'

var yuqian = {

name:'于谦',

age:72,

isMale:true,

job:'相声演员',

phoneNumber:'13848754862',

nicname:'谦哥',

address:{

city:'北京',

street:'和平里',

houseNumber:22

},

parent:{

name:'王老爷子',

job:'古汉语专家',

hobby:'收集古籍'

}

}

console,log(yuqian.address.city);括号内部是表达式

var obj = {

0:'a',

1:'b',

'how are you':'fine thank you',

name:'利利',

'home address':{

province:'广东省',

city:'广州市'

}

}

obj['0'] = 1;

obj[0] = 2;

console.log(obj[0],obj['0']); // 2 2 是一样的

console.log(obj[0]); // a

console.log(obj['name']); // 利利

// console.log(obj[name]);// 报错,name未定义 name is not defined

console.log(obj['0']); // a

console.log(obj[0]); // a // 数字0会被自动转成字符串'0'来作为属性名查找对应的值

console.log(obj.name); // 利利 ->都是表达式

console.log(obj['home address']['city'])// 广州市

var key = 'nihao'

面试:

**console.log(obj['key']) -->**读这个对象的key属性,但是对象根本没有key这个属性,所以返回undefined

console.log(obj[key]) -->表示把key这个变量的值给到,如果这个值和obj的键相同没啥问题

/**

* 打印一个对象的某个属性

* @param {object} obj 要打印的对象

* @param {string} key 要打印的对象属性名

*/

function printProperty(obj, key) {

console.log(obj[key]);//这个可以

// obj.key;

//这个不可以 == 等价于 obj['key'] 读取objde的key属性,根本没有这个属性

}

var user = {

name: 'monica',

age: 17,

sex: '女',

};

printProperty(user, 'name'); // 打印: monica

printProperty(user, 'age'); // 打印: 17

printProperty(user, 'sex'); // 打印: 女

知识回顾-数据的表达2

练习:

/*

邓哥,男,身高185有邓嫂二位:

其一名为翠花,东北人其二名为丧彪,铜锣湾人

用字面量描述上面的信息*/

const dengGe = {

name: " 邓哥",

gender: "男",

height: 185,

spouse: [

{name: "翠花",region: "东北人"},

{name: "丧彪", region: "铜锣湾人"}

]

};

console.log(dengGe.spouse[0]); //{ name: '翠花', region: '东北人' }

console.log(dengGe.spouse[1].name); //丧彪

/*

邓哥,81岁,爱好香菜、秋葵、遛鸟

成哥,30岁,爱好扯淡、找邓嫂

monica,17岁,爱好奶茶、唱歌

思考:

  1. 如何得到平均年龄

  2. 如何得到所有人所有爱好的总数

*/

var teachers = [

{name:'laodeng',age:81,hobby:['香菜','秋葵','遛鸟']},

{name:'chengge',age:30,hobby:['扯淡','找邓嫂']},

{name:'monica',age:17,hobby:['奶茶','唱歌']}

]

teachers[0].hobby[0] = '小葱'

console.log(teachers[0].hobby[0]);//小葱

console.log(teachers[0].hobby[1]);//秋葵

console.log(teachers[0].hobby[2]);//遛鸟

//1. 如何得到平均年龄

var avg = (teachers[0].age + teachers[1].age + teachers[2].age) / 3;

console.log('平均年龄是:'+avg);

// 如何得到所有人所有爱好的总数

console.log(teachers[0].hobby.length + teachers[1].hobby.length + teachers[2].hobby.length);

数据的运算

算术运算

注意NAN也是数字! {} * 'abc'

var a = '2';

a * 3 = 3

a

'2'

a += xxx 等价于 a = a+(xxx)

所以var a = 3;

a*=2+1 等价==等价 a = a*(2+1) 结果为9

a = a * 2 + 1;这种的话结果为7

a = b = 7

因为任何表达式都有值 那么就是把b = 7这个表达式赋值给了a

var obj ={

n:2

}

var obj1 = {

n:3

}

obj1.n = obj.n = 10;

console.log(obj,obj1)//{ n: 10 } { n: 10 }

比较运算

user = {

name: '张三',

isMale: false

}

sex = '女'

// 省去if 和else部分,直接用表达式赋值

console.log(user.isMale = sex === '男');//false

转布尔

1&&2 返回2

0 &&2 返回0 因为返回的是最后一个判定的数据 0->false已经完了

&&运算符完毕


练习

function sum(a,b){

//其他类型的数据需要转换成数字

a = +a;

b = +b;

//如果是NAN的数据,则转换成0

if(isNaN(a)){

a = 0;

}

if(isNaN){

b = 0;

}

// 改进版本

a = +a || 0;

//+a一定是数字,但有可能是NaN,

// 如果是NAN,因为NaN是false值,所以用||0转换成0

//不是NAN是正常数字,就返回a本身

// 我们因为会寻找最后一个判定的依据

b = +b || 0;

return a + b;

}

console.log(sum('1',2))

var year= 1900;

// 条件1 || 条件2

var res = (year % 4 === 0 && year % 100 !== 0)

|| (year % 400 === 0);

res = res?'是':'否'

console.log(res);

console.log((year % 4 === 0 && year % 100 !== 0)

|| (year % 400 === 0) ? '是':'否');

// 输出表达式既可:数据可以是表达式,变量,也可以是值

任何可以写数据的地方都可以写变量/表达式/值

tips

var height = 185;

var weight = 75;

var bmi = weight / (height/100) ** 2;

var res = bmi >= 20 && bmi <= 25 ? '正常' : '不正常';

var res = bmi >= 20 && bmi <= 25 ? '正常' : bmi < 20 ? '偏瘦':'偏胖';

console.log(res);

相关推荐
froginwe112 小时前
Java 文档注释
开发语言
Zsy_0510032 小时前
【C++】stack、queue、容器适配器
开发语言·c++
一起努力啊~2 小时前
算法刷题--栈和队列
开发语言·算法
双层吉士憨包2 小时前
Airbnb(爱彼迎)爬虫全流程解析:用 Python 抓取房源数据实战指南
python·ai·网络爬虫
万行2 小时前
SQL进阶&索引篇
开发语言·数据库·人工智能·sql
打工的小王2 小时前
java并发编程(六)CountDownLatch和回环屏障CyclicBarrier
java·开发语言
星火开发设计2 小时前
命名空间 namespace:解决命名冲突的利器
c语言·开发语言·c++·学习·算法·知识
小北方城市网2 小时前
RabbitMQ 生产级实战:可靠性投递、高并发优化与问题排查
开发语言·分布式·python·缓存·性能优化·rabbitmq·ruby
曲幽2 小时前
FastAPI部署中间件实战:从CORS到自定义,让你的API更健壮
python·fastapi·web·cors·starlette·middleware·call_next