知识回顾-数据的表达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种表达方式
-
变量 - 存储数据的容器
-
字面量 - 直接写出的值(如数字、字符串)
-
表达式 - 可计算求值的式子

💡 程序中任何需要数据的位置,都可以使用以上任意一种形式
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岁,爱好奶茶、唱歌
思考:
如何得到平均年龄
如何得到所有人所有爱好的总数
*/
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);

报错





























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