js中变量name问题以及js中的关键字和保留字。

在进行DOM操作练习中,作者尝试对输入的账号及密码进行长度限制,以实现简单的表单验证。过程中遇到了无法改变输入框样式的问题,经过一番调试,发现是由于name属性的引用不当导致的。最终通过修改代码成功实现了预期的功能。

今天做dom练习时,想对输入的账号以及密码做一个简单的限制。

问题:检测用户名是否是3-6位,密码是否是6-8位,如果不满足要求高亮显示文本框

本以为很简单的例子,出现了问题。想了好长时间,逻辑都是对的,想要获取输入框字符串,获取长度,变色,就好了。

        

但输入框就是没有变化,想不通。。。。。然后各种测试,各种改,直到我快放弃。。。然后我决定把验证密码的代码补全,然后去请教师兄,我发现,密码的能获取到。。。。。。。。。心中一万头羊驼飞奔

然后,我的目光集中到那两个name上了,下面简单化代码,按道理控制台应该输出gg,但是控制台输出的却是undefined。

然后改动了一下。控制台输出gg了呢,撒花~~~~~~~~~(困扰我将近半个小时的问题,心中羊驼跑的更加欢快了)

js关键字和保留字(并没有name)

 

### 常见保留关键字及其功能说明 JavaScript 中的保留关键字是指当前未被用作关键字,但未来可能会被语言规范采纳为关键字的词汇。这些词汇不能用于变量名、函数名或标签名称,否则可能在未来版本中导致语法错误或行为异常。 以下是一些常见的 JavaScript 保留关键字及其潜在用途: #### `class` `class` 关键字用于定义类,是 ES6(ECMAScript 2015)引入的新特性之一,用于实现基于类的面向对象编程模型[^1]。 示例: ```javascript class Person { constructor(name) { this.name = name; } sayHello() { console.log(`Hello, my name is ${this.name}`); } } ``` #### `const` `const` 用于声明常量,即一旦赋值后就不能更改其值的变量。该关键字在 ES6 中引入,增强了变量作用域不可变性的控制能力[^1]。 示例: ```javascript const PI = 3.14159; // PI = 3.14; // 报错:Assignment to constant variable. ``` #### `let` `let` 用于声明块级作用域的变量,与 `var` 不同,它不会发生变量提升,并且只在其所在的代码块内有效。这是 ES6 引入的关键字之一[^1]。 示例: ```javascript if (true) { let x = 10; console.log(x); // 输出 10 } // console.log(x); // 报错:x is not defined ``` #### `import` `export` 这两个关键字用于模块化开发,`import` 用于导入其他模块导出的功能,而 `export` 则用于导出当前模块的功能供其他模块使用。它们是 ES6 模块系统的核心部分[^1]。 示例: ```javascript // math.js export const add = (a, b) => a + b; // main.js import { add } from './math.js'; console.log(add(2, 3)); // 输出 5 ``` #### `async` `await` `async` 用于声明一个函数为异步函数,返回一个 Promise 对象;`await` 只能在 `async` 函数内部使用,用于等待 Promise 解析完成。这两个关键字简化了异步编程的复杂性[^1]。 示例: ```javascript async function fetchData() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log(data); } catch (error) { console.error('Error fetching data:', error); } } ``` #### `extends` `super` `extends` 用于类继承,允许一个类继承另一个类的属性方法;`super` 用于调用父类的构造函数或方法[^1]。 示例: ```javascript class Animal { constructor(name) { this.name = name; } speak() { console.log(`${this.name} makes a noise.`); } } class Dog extends Animal { constructor(name) { super(name); // 调用父类的构造函数 } speak() { console.log(`${this.name} barks.`); } } const d = new Dog('Rex'); d.speak(); // 输出 "Rex barks." ``` #### `interface`, `package`, `private`, `protected`, `public`, `static`, `synchronized`, `throws`, `transient`, `volatile` 这些关键字虽然目前尚未被 JavaScript 使用,但在 Java 等语言中有明确用途。JavaScript 规范保留了它们作为未来扩展的可能性,因此不能用于标识符名称[^1]。 --- ### 注意事项 - 如果将保留字用作变量名或函数名,那么除非将来的浏览器实现了该保留字,否则很可能收不到任何错误消息。当浏览器将其实现后,该单词将被看做关键字,如此将出现关键字错误。 - 保留关键字的存在是为了确保语言的向后兼容性未来的可扩展性,开发者应避免使用这些词汇作为自定义标识符。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值